【2023年秋期】情報処理安全確保支援士 午後試験【問1】
【出題趣旨】
脆弱性を悪用されたインシデント発生時の対策立案においては、影響度の把握や適切な対策検討、及び優先度決定のため、どのような脆弱性がどのように悪用されたかを理解した上で対応を検討する必要がある。
本問では、Webアプリケーションの脆弱性を悪用されたことによるインシデント対応を題材に、HTMLやECMAScriptから悪用された脆弱性と問題点を読み解き、対策を立案する能力を問う。
問1(1)
正解はイ:格納型XSSです。
それぞれの特徴を確認してみましょう。
ア:DOM Based XSS
DOM(Document Object Model)をJavaScriptが操作することによって事象が発生するXSSです。"DOMとして受信する。"という記載がスクリプト内のコメントにあり、選んでしまいそうになります。しかし、スクリプト内にDOMツリーに関する操作(innerHTMLなどでHTMLへの変更を動的に反映)がないため対象外です。対策はJavaScriptでHTMLに変更を加える際にエスケープ処理を実装することです。
#DOMツリー
HTMLから作成される構造体でツリー構造を持つイ:格納型XSS
蓄積型XSSとも呼ばれます。今回のケースではレビュー機能を悪用して攻撃者が投稿した不正なスクリプトがサーバ上に保存されることが原因となっており、典型的な格納型XSSのケースです。正常なリクエストを行ったユーザにも影響があり、早急に対策が必要な攻撃手法となります。
対策はサーバにデータを登録する際にエスケープ処理を実装することです。ウ:反射型XSS
攻撃者が用意した罠サイトのURLにアクセスした際に発生するXSSです。不正なスクリプトがレスポンスとして返ってきて、それがユーザのブラウザ上で実行されることで攻撃が成立します。対策は受け取ったデータをブラウザに表示する際にエスケープ処理を実装することです。
問1(2)
(1)で判明したした格納型XSSへの対策を記述する問題です。図3を確認するとレビュータイトルにスクリプトが埋め込まれていることが確認できます。
よって、模範解答は「レビュータイトルを出力する前にエスケープ処理を施す。」となります。個人的には"review-title"タグに限定するよりも"会員が入力可能な文字列"などタグに限定しない対策の方が望ましいのではないかと感じています。
問2
図3を確認すると、"/* ~ */" で 囲われており、コメントアウトされている箇所が散見されます。コメントアウトされている部分を除くと<script>~</script>で攻撃者が実行させたいスクリプトが完成します。
よって、模範解答は「HTMLがコメントアウトされ一つのスクリプトになるような投稿を複数回に分けて行った。」となります。
問3(1)
6行目からの処理を確認します。
'---------------------------------------------------------------------
7:url1のレスポンスを変数pageに格納
8:レスポンスから"token"を取得し、変数tokenに格納
9:新しいリクエストのインスタンスを作成
10:リクエスト用のURL文字列を作成
11:9で作成したインスタンスのメソッド(POST)とURLを指定
12:新しいformのインスタンスを作成
13:レスポンスからcookieを読み込んで変数cookieへ格納
14:ファイル名称を指定
15:ファイルタイプ(拡張子)を指定
16:ファイルオブジェクトの生成(cookie,"a.png","image/png")
ファイルの実態はcookieだが、ファイル名と拡張子は画像
17:formに作成したファイルオブジェクトを指定
18:formにtokenを指定
19:formをPOSTリクエストとして送信
'---------------------------------------------------------------------
よって、模範解答は「XHRのレスポンスから取得したトークンとともに、アイコン画像としてセッションIDをアップロードする。」となります。セッションIDの部分をクッキーとしても部分点はもらえるはずです。
問3(2)
アップロードされた情報は画像情報として保存されているため、テキストエディタ等で開いて、目的の情報(文字列)を抽出する必要があります。
よって、模範解答は「会員のアイコン画像をダウンロードして、そこからセッションIDの文字列を取り出す。」となります。
問3(3)
できることなので、図1から抜粋することも検討しましたが文字数が足りないのでWebアプリQの機能とまとめて記載しましょう。なりすましについての記載があるかというのもポイントです。
よって、模範解答は「ページVにアクセスした会員になりすまして、WebアプリQの機能を使う。」となります。
問4
CookieはDomain属性やSameSite属で異なるドメインへのcookieの共有を制限することができます。
Domain属性はWebサーバ からクライアントへのcookieの送信条件を定義する属性です。指定しない場合はCookieを発行したクライアントにのみ送信されます。
SameSite属性はクライアントからWebサーバのcookieの送信条件を定義する属性です。Strict/Lax(Default)/Noneが設定できます。
よって、模範解答は「スクリプトから別ドメインのURLに対してcookieが送られない仕組み。」となります。