情報処理安全確保支援士試験 令和3年度 秋期 午後2 問1
【出典:情報処理安全確保支援士試験 令和3年度 秋期 午後2 問1(一部、加工あり)】
[Dシステムの脆弱性対策]
XSS脆弱性の報告を受けたU社は、N社の支援を受けて、DシステムのXSS脆弱性対策を進めることにした。支援を担当した情報処理安全確保支援士(登録セキスペ)であるR氏は、二つの対策を提案した。
一つ目の対策は、①図3で特定されたXSS脆弱性を解消するためのUアプリの改修である。
二つ目の対策は、”Content-Security-Policy:script-src ‘self’;”というヘッダフィールドを、HTTPレスポンスのヘッダに追加することによって、Webブラウザに対して②指定したスクリプトファイルの実行だけを許可するというものである。この対策は、一つ目の対策に比べて短期間で実施可能であるが、Dシステムが用いている正規のスクリプトが意図したとおりに動作するように、③実行が制限されてしまうスクリプトの有無を確認し、もしあれば、当該箇所の呼出し方法を変更する必要がある。
一部の古いWebブラウザはContent-Security-Policyに対応していないので、万全の対策のためには、二つの対策を両方実施することが必要である。
U社は、R氏の提案どおり、Content-Security-Policyを速やかに追加するとともに、Uアプリの改修計画の策定を開始した。
下線①について、改修方法を45字以内で具体的に述べよ。:http://またはhttps://で始まるURLだけを出力するようにする。
「一つ目の対策は、①図3で特定されたXSS脆弱性を解消するためのUアプリの改修である。」
図3で特定されたXSS脆弱性とは何なのか、改めて図3を確認していきます。
⑸の「refURLパラメタの値を画面Bの参考URLのリンクとして出力する際の処理に問題があり、XSS脆弱性が存在する」、⑹の「脆弱性の原因は、refURLパラメタの出力部において、プログラミングに関する次の二つのうちのどちらかによるものと想定される」とあります。
そして、「XSSを防ぐための処理を一切していない。」、「XSSを防ぐための基本的な処理はしているが、HTMLタグの属性値の出力時に必要な処理が行われていない。」のどちらの誤りなのかを図8、図9で見ていきます。
診断用URL3のrefURLパラメタの値「”%20onmouseover=alert(‘XSS!’)%20foo=”」は、HTTPレスポンスのボディ部では、「<a href=”" onmouseover=alert(‘XSS!’) foo="”>" onmouseover=alert(‘XSS!’) foo="</a>」となっていて、「”」は「"」とエスケープ処理されています。
したがって、「XSSを防ぐための基本的な処理はしているが、HTMLタグの属性値の出力時に必要な処理が行われていない。」というのが特定されたXSS脆弱性であると判断できます。
HTMLタグの属性値の出力については、前の設問で、診断用URL2としてrefURLパラメタを「refURL=javascript:alert(‘XSS!’)」とした場合、レスポンスで「<a href=”javascript:alert(‘XSS!’))”> javascript:alert(‘XSS!’)</a>」となり、javascript:のようなスキームをそのまま出力していることが分かりました。
これを踏まえると、スキームとしてはhttp://またはhttps://で始まるURL以外は出力しないようにする必要があります。
下線②について、実行が許可されるのはどのようなスクリプトファイルか。40字以内で述べよ。:URLと同じオリジンであるスクリプトファイル
「二つ目の対策は、”Content-Security-Policy:script-src ‘self’;”というヘッダフィールドを、HTTPレスポンスのヘッダに追加することによって、Webブラウザに対して②指定したスクリプトファイルの実行だけを許可するというものである。」
Content-Security-Policy(CSP)とは、XSS攻撃の対策の一つで、HTTPレスポンスヘッダとして指定することでブラウザの動作を制限することができるものです。
「”Content-Security-Policy:script-src ‘self’;”」と指定することで、スクリプトのURIがHTTPレスポンスを応答するWebサーバのURLと同じオリジン(スキーム(http://またはhttps://)、FQDN、ポート番号の組み合わせ)の場合だけ、スクリプトを呼び出して実行することになります。
【安全なウェブサイトの作り方ークロスサイト・スクリプティング(IPA)】
下線③について、実行が制限されてしまうのはどのようなスクリプトか。30字以内で述べよ。また、変更後の呼出し方法を50字以内で具体的に述べよ。:HTMLファイル中に記載されたスクリプト/スクリプトを別ファイルとして同一オリジンに保存して、HTMLファイルから呼び出す。
「この対策は、一つ目の対策に比べて短期間で実施可能であるが、Dシステムが用いている正規のスクリプトが意図したとおりに動作するように、③実行が制限されてしまうスクリプトの有無を確認し、もしあれば、当該箇所の呼出し方法を変更する必要がある。」
「この対策」とは、前の設問にあるように、”Content-Security-Policy:script-src ‘self’;”というヘッダフィールドを、HTTPレスポンスのヘッダに追加することによって、Webブラウザに対して指定した(URLと同じオリジンの)スクリプトファイルの実行だけを許可するというものでした。
実は、”Content-Security-Policy:script-src ‘self’;”と指定すると、これ以外に、HTMLファイルの中で「<script>スクリプトのソースコード</script>」の形式で記載されるインラインスクリプトの実行も禁止されます。
したがって、同じオリジンの正規のスクリプトであっても、HTMLファイル中に記載されたスクリプトは実行が制限されてしまいます。
これに対処するには、HTMLファイル中にスクリプトを記載するのではなく、スクリプトを別ファイルとして同一オリジンに保存して、HTMLファイルから呼び出すようにすれば良いでしょう。