資格部

資格・検定の試験情報、対策方法、問題解説などをご紹介

SC 令和5年度秋期 午後 問1

   

Webアプリケーションプログラムの開発に関する次の記述を読んで,設問に答えよ。

 Q社は,洋服のEC事業を手掛ける従業員100名の会社である。WebアプリQというWebアプリケーションプログラムでECサイトを運営している。ECサイトのドメイン名は“□□□.co.jp”であり,利用者はWebアプリQにHTTPSでアクセスする。WebアプリQの開発と運用は,Q社開発部が行っている。今回,WebアプリQに,ECサイトの会員による商品レビュー機能を追加した。図1は,WebアプリQの主な機能である。

図1 WebアプリQの主な機能

 ある日,会員から,無地Tシャツのレビューページ(以下,ページVという)に16件表示されるはずのレビューが2件しか表示されていないという問合せが寄せられた。開発部のリーダーであるNさんがページVを閲覧してみると,画面遷移上おかしな点はなく,図2が表示された。

図2 ページV

 WebアプリQのレビューページでは,次の項目がレビューの件数分表示されるはずである。

・レビューを投稿した会員のアイコン画像

・レビューを投稿した会員の表示名

・レビューが投稿された日付

・レビュー評価(1〜5個の★)

・会員が入力したレビュータイトル

・会員が入力したレビュー詳細

 不審に思ったNさんはページVのHTMLを確認した。図3は,ページVのHTMLである。

図3 ページVのHTML

 図3のHTMLを確認したNさんは,会員Aによって15件のレビューが投稿されていること,及びページVには長いスクリプトが埋め込まれていることに気付いた。Nさんは,ページVにアクセスしたときに生じる影響を調査するために,アクセスしたときにWebブラウザで実行されるスクリプトを抽出した。図4は,Nさんが抽出したスクリプトである。

図4 Nさんが抽出したスクリプト

 Nさんは,会員Aの投稿はクロスサイトスクリプティング(XSS)脆弱性を悪用した攻撃を成立させるためのものであるという疑いをもった。NさんがWebアプリQを調べたところ,WebアプリQには,会員が入力したスクリプトが実行されてしまう脆弱性があることを確認した。加えて,WebアプリQがcookieにHttpOnly属性を付与していないこと及びアップロードされた画像ファイルの形式をチェックしていないことも確認した。
 Q社は,必要な対策を施し,会員への必要な対応も行った。

設問1 この攻撃で使われたXSS脆弱性について答えよ。

 

(1)XSS脆弱性の種類を解答群の中から選び,記号で答えよ。

 

  1. DOM Based XSS
  2. 格納型XSS
  3. 反射型XSS
解答・解説
解答例

 イ

解説
開発部のリーダーであるNさんがページVを閲覧してみると,画面遷移上おかしな点はなく,図2が表示された。

という記述から、攻撃者が用意したリンクなどを経由したものではないことがわかります。つまり、攻撃スクリプトはあらかじめサーバに仕込まれていたものであると推測できます。

  1. DOM Based XSS
    DOM Based XSSとは、JavaScriptによるDOM操作が原因で発生するXSSです。他のXSSがサーバのコードの不備が原因となるのに対して、DOM Based XSSはフロントエンドのコードの不備によって発生します。

  2. 格納型XSS
    格納型XSS(Stored XSS、蓄積型XSS)とは、攻撃者がWebアプリケーションに悪意のあるスクリプトを永続的に保存し、そのスクリプトが他のユーザーがページにアクセスするたびに実行される攻撃手法です。

  3. 反射型XSS
    反射型XSS(Reflected XSS、非蓄積型XSS)とは、攻撃者がユーザーに偽装して、悪意のあるスクリプトを含むURLを送り、そのURLをクリックしたユーザーのブラウザでスクリプトを実行させる攻撃手法です。

 

(2)WebアプリQにおける対策を,30字以内で答えよ。

 

解答・解説
解答例

 レビュータイトルを出力する前にエスケープ処理を施す。

解説

 ーIPAの『安全なウェブサイトの作り方』にて、クロスサイト・スクリプティングへの根本的解決として「ウェブページに出力する全ての要素に対して、エスケープ処理を施す」ことが挙げられています。

www.ipa.go.jp

 

設問2 図3について,入力文字数制限を超える長さのスクリプトが実行されるようにした方法を,50字以内で答えよ。

 

解答・解説
解答例

 HTMLがコメントアウトされ一つのスクリプトになるような投稿を複数回に分けて行った。

解説

 図3(ページVのHTML)を見ると、スクリプトタグ(<script>〜</script>)の中でコメントアウト(/*〜*/)されています。
 つまり、コメントアウトを挟み一つのスクリプトを複数箇所に分けることで、文字数制限を回避していることがわかります。

 

設問3 図4のスクリプトについて答えよ。

 

(1)図4の6〜20行目の処理の内容を,60字以内で答えよ。

 

解答・解説
解答例

 XHRのレスポンスから取得したトークンとともに,アイコン画像としてセッションIDをアップロードする。

解説

 ー

 

(2)攻撃者は,図4のスクリプトによってアップロードされた情報をどのようにして取得できるか。取得する方法を,50字以内で答えよ。

 

解答・解説
解答例

 会員のアイコン画像をダウンロードして,そこからセッションIDの文字列を取り出す。

解説

 利用者がページVのスクリプトを実行させられた際の挙動は、前問の解説の通りです(プロフィール機能で、cookieを埋め込んだアイコン画像ファイルがアップロードされます)。

 あとは、攻撃者がこの画像をダウンロードしてcookie情報を抽出すると、セッションIDを取得されてしまいます。

 

(3)攻撃者が(2)で取得した情報を使うことによってできることを,40字以内で答えよ。

 

解答・解説
解答例

 ページVにアクセスした会員になりすまして,WebアプリQの機能を使う。

解説

 セッションIDを取得されてしまうと、その正規の会員で偽装することができます。
 つまり、当該会員になりすまして、WebアプリQを利用したり、個人情報を取得することができてしまいます。

 

設問4 仮に,攻撃者が用意したドメインのサイトに図4と同じスクリプトを含むHTMLを準備し,そのサイトにWebアプリQのログイン済み会員がアクセスしたとしても,Webブラウザの仕組みによって攻撃は成功しない。この仕組みを,40字以内で答えよ。

 

解答・解説
解答例

 スクリプトから別ドメインのURLに対してcookieが送られない仕組み

解説

 Webブラウザには、同一生成元ポリシー(SOP:Same Origin Policy)という仕組みがあります。

 SOPは、Webブラウザにおけるセキュリティ機能の一つで、異なる生成元(オリジン)のリソース間でのアクセスや操作を制限する仕組みです。
 これは、悪意のあるWebサイトが、ユーザーの意図に反して別のWebサイトの情報を取得したり、操作したりすることを防ぐための対策です。

 なお、オリジンとは、Webサイトの生成元を識別するための情報で、以下の3要素の組み合わせによって定義されます。

  • スキーム:プロトコル(HTTP、HTTPSなど)
  • ホスト:ドメイン名またはIPアドレス
  • ポート番号:通信ポート番号(デフォルトの場合は省略可)

 ちなみに、設問の通りに、攻撃者が用意したドメインのサイトでスクリプトを実行させたとしても、それで取得できるcookieは攻撃者が用意したドメインのサイトのものであり、WebアプリQのものではありません。
 したがって、それでWebアプリQを不正利用することはできません。

 

IPA公開情報

出題趣旨

 脆弱性を悪用されたインシデント発生時の対策立案においては,影響度の把握や適切な対策検討,及び優先度決定のため,どのような脆弱性がどのように悪用されたかを理解した上で対応を検討する必要がある。
 本問では,Web アプリケーションプログラムの脆弱性を悪用されたことによるインシデント対応を題材に,HTML や ECMAScript から悪用された脆弱性と問題点を読み解き,対策を立案する能力を問う。

採点講評

 問1では,Web アプリケーションプログラムの脆弱性悪用によって発生したインシデントへの対応を題材に,悪用されたクロスサイトスクリプティング(XSS)脆弱性の把握と対応について出題した。全体として正答率は平均的であった。 
 設問 1(1)は,正答率は平均的であったが,スクリプトで DOM を使用していたことからか,“DOM Based XSS” と誤って解答する受験者が散見された。脆弱性の種類や埋め込まれた状況に応じた適切な対策を施すためにも,脆弱性は特徴や対策方法まで含めて,正確に理解してほしい。 
 設問 2 は,正答率が平均的であった。HTML やスクリプトをよく確認すれば解答ができたはずであるが,“開発者ツールで入力制限を削除してから投稿した”のように,確認が不足していると考えられる解答が一部に見られた。攻撃者の残した痕跡を注意深く確認し,攻撃者の行った攻撃の方法を正確に把握する能力を培ってほしい。 
 設問 3(3)は,正答率が高かった。攻撃によって起きるかもしれない被害を推察して解答する必要がある問題であったが,EC サイトにおいて cookie が攻撃者に取得されることの影響について,よく理解されていた。

前問 ナビ 次問