解答例は公式サイトを確認しているものの、自分の記憶に入り込みやすい形で書いているので、満点解答とは限りません。思考回路をなるべく文字に起こしておりますので、お役に立てれば幸いです。
重要ワード
- HTMLエスケープ
タグや属性を記載するときに「<」「””」といった文言を使用しますが、実際に「<””>」とベタ打ちしたいときにそれらを別ものと区別するための文字参照です。 - SIEM
Security Information and Event Managementの略。アプリログ、FWログ、IDS/IPSログ等の収集分析することの総称を指します。複数のログを合わせて総合的に判断することで正確なインシデント検知が出来るようになります。 - HTTPサーバー
Webサーバーと同義で考えてよいと思います。IIS(Internet Information server)やApacheなどのソフトウェアを利用することで、PCをHTTPサーバーとして機能させることが出来ます。 - XSS
クロスサイトスクリプティングの略。HTMLなどに脆弱性がある場合、そのウェブページにスクリプト等を埋め込まれてしまいます。この問題を「クロスサイト・スクリプティングの脆弱性」と呼び、この問題を悪用した攻撃手法を、「クロスサイト・スクリプティング攻撃」と呼びます。
(IPA公式サイトより引用) - CSP
Content Security Policyの略。ブラウザで起こりうる問題を緩和するセキュリティの追加レイヤーです。その機能の一つに、反射型クロスサイト・スクリプティング攻撃を防止する「reflected-xss」があります。HTTP レスポンスヘッダに「Content-Security-Policy: reflected-xss block」のように設定することで、クロスサイト・スクリプティング攻撃のブロックを試みる機能が有効になります。
(IPA公式サイトより引用) - IDaaS
Identity as a Serviceの略。クラウド統合認証といったところです。クラウドサービスを複数利用する場合のSSO(シングルサインオン)にも役立ちます。 - オリジン
HTTP通信におけるオリジンとはURIスキーム、ホスト名、ポート番号の組み合わせのことです。
解答・解説
設問1 Dシステムの脆弱性診断
(1)図5中のa、bに入れる適切な文字列を、それぞれ4文字で答えよ。
解答例:
a <
b >
解説:
図5から、descriptionパラメタの値を画面Bの備考に出力する際には、エスケープ処理が正しく行われており・・・
図3 XSSの脆弱性報告(抜粋)
このことから、エスケープ処理の記載をしていく必要があります。
エスケープ対象 | エスケープ文字 | 名称 |
< | < | 小なり |
> | > | 大なり |
(半角スペース) | | 半角スペース |
& | & | アンパサンド |
– | – | 半角ダッシュ |
© | © | コピーライト |
“ | " | ダブルクォーテーション |
‘ | ' | シングルクォーテーション |
今回の問いにはタグ< >を入れればよいの解答は<,>が入ります。
(2)図6及び図7中のcに入れる適切な文字列を、解答群の中から選び記号で答えよ。
解答例:エ
解説:反射型クロスサイトスクリプティングに対しての脆弱性をテストする問題です。
(4)診断用URL2を入力した際に表示された画面B上で、参考URLのリンクをクリックすると、”XSS!”という内容のダイアログボックスが表示された。
図3 XSSの脆弱性報告(抜粋)
と記載があるので、”XSS!”というダイアログボックスが表示できるような攻撃をするためにはどうすれば良いかを考えながら進めていきましょう。
問のURLを下記に転記します。
https://dsys.u-sha.co.jp/submitdescription?fileID=001023&description=test2&checkbox=on&refURL=[ C ]
ここにア~エの文章を入れた時にHTTPのレスポンスボディ部がどのようになるのか、見てみましょう。
ア:onmouseover=alert(‘XSS!’) のとき
<a
href=”onmouseover=alert(‘XSS!’)”>onmouseover=alert(‘XSS!’)
</a>
上記はURLの記載が変化しているだけなので、ダイアログボックスは表示されません。
イ:“><script>alert(‘XSS!’)</script> のとき
<a
href=””><script>alert(‘XSS!’)</script>”>”><script>alert(‘XSS!’)</script>
</a>
上記はhrefのURLは空になり代わりに<script>文が2つ埋め込まれます。
2回ダイアログボックスが表示される時点で誤答な気がしていますが、他を見てみましょう。
ウ:http:<script>alert(‘XSS!’)</script> のとき
<a
href=”http:<script>alert(‘XSS!’)</script>”>http:<script>alert(‘XSS!’)</script>
</a>
URLとアンカーテキスト部分が生成されます。ポップアップは表示されません。
エ:javascript:alert(‘XSS!’) のとき
<a
href=”javascript:alert(‘XSS!’)”>javascript:alert(‘XSS!’)
</a>
URLをクリックすると、アラートダイアログが1回表示されますね。答えはエになるでしょう。
設問2 Dシステムの脆弱性対策
(1)本文中の下線①について、改修方法を 45 字以内で具体的に述べよ。
解答例:http://又はhttps://で始まるURLだけを出力するようにする。
解説:こちらの詳細は、IPAのHP内の情報セキュリティ対策コラムにて公表されていますので、そちらをご確認ください。
上記を覗いて欲しいところですが、面倒なあなたのために、こちらにも根本解決策として書かれている改修方法を記載しておきます。
①ウェブページに出力する全ての要素に対して、エスケープ処理を施す。
②URLを出力するときは、「http://」や 「https://」で始まるURLのみを許可する。
③<script>…</script> 要素の内容を動的に生成しない。
④スタイルシートを任意のサイトから取り込めるようにしない。
下記の問題文でもあるように、このプログラムの問題点を特定する必要があります。
(6)・・・・次の2つの誤りのうちのどちらかによるものと推定される
図3 XSSの脆弱性報告(抜粋)
ーXSSを防ぐための処理を一切していない。
ーXSSを防ぐための基本的な処理はしているが、HTMLタグの属性値の出力値に必要な処理が行われていない。
(7)・・・・その時に得られたサーバーからのHTTPレスポンスのボディ部が図9である
ここで図9のレスポンスボディ部を確認すると
参考URL:<a href= “" onmouseover=alert(‘XSS!’) foo="
図9 診断URL3に対するHTTPレスポンスボディ部
onmouseover=alert(‘XSS!’)%20foo=”>
%20(スペース)や、"(ダブルクォーテーション)などのエスケープ処理はうまく機能しているように見えますね。
よって、URLをウェブアプリケーション上に出力する際の制限が甘いことがプログラムミスによる脆弱性を生んでいると考えられます。IPA公式サイトの対策でいうと、②が当てはまります。
①ウェブページに出力する全ての要素に対して、エスケープ処理を施す。
②URLを出力するときは、「http://」や 「https://」で始まるURLのみを許可する。
③<script>…</script> 要素の内容を動的に生成しない。
④スタイルシートを任意のサイトから取り込めるようにしない。
(2)本文中の下線②について、実行が許可されるのはどのようなスクリプトファイルか。40字以内で述べよ。
解答例:URLと同じオリジンであるスクリプトファイル
解説:URLと同じドメインからのスクリプトの読み込みを許可する。という解答でも正解だと思います。script-srcというのはJavaScriptのみを制限するという意味で、.cssや画像までは制限しません。
Content-Security-Policy後の記述 | 制限されるもの |
script-src | JavaScriptのみ |
default-src | .js、.css、画像などすべて |
詳しく知りたい方は、この方のサイトをご確認ください。
(3)本文中の下線③について、実行が制限されてしまうのはどのようなスクリプトか。30 字以内で述べよ。また、変更後の呼出し方法を 50 字以内で具体的に述べよ。
解答例:
スクリプト:HTMLファイル中に記載されたスクリプト
呼び出し方法:スクリプトを別ファイルとして同一ファイルに保存して、HTMLファイルから呼び出す。
解説:(2)が理解できている人にとっては当たり前の解答かもしれません。
(2)では自ドメイン以外のURLのスクリプト読み込みを制限していますので、それを解答すればよいです。
呼び出すためには、同じオリジン内にスクリプトファイルを保存して呼び出してあげる必要があります。
設問3 項目1の検討
(1)本文中のd、eに入れる適切な字句を解答群の中から選び、記号で答えよ。
解答例:
d:ウ (情報セキュリティ策)
e:ア (個人情報保護)
解説:
ISO認証に関する知識問題です。
ISO/IEC27017はクラウドサービスセキュリティーに関する品質項目になります。27001の項目では補いきれない、クラウドサービスにおける情報セキュリティ対策について記載されています。
ISO/IEC27018はクラウドサービスの中でも個人情報の保護に関する項目に焦点を当てた国際規格です。
AWS,Azure,Googleなどは両項目ともに認証済みです。(2022/4月時点)
規格について、読んだことが無い方は一度見ておきましょう。
(2)本文中の下線④について、取り得る措置を 40字以内で述べよ。
解答例:ファイルをU社が管理する鍵で暗号化してからアップロードする。
解説:下記に着目できると正解が導き出せます。(着目できるかが難しいです。)
Gサービスの機能として、自動的に暗号化され、暗号鍵はG社が管理するので可
表2 項目1の検討結果
F国政府にデータを抜かれた場合にもU社独自の暗号化を施していれば問題無いです。暗号化の方法は不問ですが、GサービスとU社の暗号を二重ハイブリッドのような形にしておけばよいということになります。
設問4 項目2の検討
項目2はSIEMについてでやんす。サブシステムが多くなると、SIEMは複数システムの統合的なログ収集が必要となる。導入難易度も上がってくるので、こういった問題はよく出てくるでやんすね。
(1)表4中のfに入れる適切な内容を 20 字以内で答えよ。
解答例:同一利用者IDでのログイン失敗
解説:総当たり攻撃に対する基本対策です。基本的な問題ですね。
(2) 本文中の下線⑤について、ほかの場合とはどのような場合か。40 字以内で述べよ。
解答例:アクセス元IPアドレスを変えながら、不正アクセスを続けた場合
解説:攻撃側がIPアドレスを変えたり、偽装したりするのは常套手段です。特にIPアドレスを偽装しながらセキュリティーポリシーを掻いくぐる行為を「IPスプーフィング」といいIPアドレス制限を意味の為さないものにしてしまいます。DDoS攻撃にも使われているものです。
設問5 IDaaSとの連携による多要素認証の実現方式の検討
(1)本文中のgに入れる適切な内容を、20 字以内で具体的に答えよ。
解答例:メッセージをKサービスとの間で中継
解説:攻撃者は偽Kサーバーを立て、何らかの形で偽サイトへ誘導し認証情報を得ようと試みています。そこでオリジンbというサーバーを一意にする情報を持たせることで偽サーバーへの接続を検知します。
(2)表7中のh ~ kに入れる、適切な内容を、それぞれ 10字以内で答えよ。
解答例:
h:生体認証
i:Kサービス
j:アカウント削除
k:アカウントを無効
解説:
h:表5中にスマートフォンには生体認証装置が組み込まれていると書いてあります。
i,j:運用の問題です。Gサービスのアカウントを削除するよりも、Kサービスのアカウントを削除するこ方が、別サービスの利用も制限できるので効率的です。IDaaSを利用しているなら認証サービスから削除しましょう。
k:クレジットカード紛失時と同じ手続きですね。所持情報なので、なくした場合はすぐに届け出を出す必要があります。
(3)本文中の下線⑥のように考えた理由は何か。50 字以内で述べよ。
解答例:Gサービスへのアクセスをファイル受け渡し用PCからのアクセスだけに限定できるから
解説:下記の文言に注目してみましょう。Dシステムの現行の課題を見つけ出す必要がありますので、前半の記述に目を当てたいなぁ。と思えるとベストですね。
・・・ファイル受け渡し用PCには、各協力会社の社内への設置、並びに盗難対策、マルウェア対策及び不正持ち出し対策を求めている。また、Dシステムにはファイル受け渡し用PCからだけアクセスできるように求めている。
セキュリティーインシデントの発生
認証器をスマートフォンにした場合、スマートフォンと受け渡し用PCの両方からのアクセスを許可する必要があります。これはU社のセキュリティー要件を変更する必要(セキュリティー要件を満たさないので上司に却下される可能性)がありますね。
終わりに
以上で令和3年秋期 午後Ⅱ 問1の解説を終わります。
考え方が違うよ~というところがあればコメントで教えてください!
コメント