サイトアイコン やさしいネットワークとセキュリティ

【情報処理安全確保支援士試験 令和6年度 春期 午後 問3 設問1】クロスサイトスクリプティング(XSS)

情報処理安全確保支援士(登録セキスペ)やネットワークスペシャリストを目指す皆さん、日々の学習お疲れ様です!実践的なスキルが問われる午後問題は、なかなか手強いですよね。

そこで今回は、令和6年度 春期 午後 問3で出題された「Webセキュリティ」の問題をピックアップ。特に多くの受験者が苦手意識を持つクロスサイトスクリプティング(XSS)に関する【設問1】を、一緒に解きほぐしていきましょう!

【出題趣旨】や【採点講評】で指摘されているポイントも交えながら、「なぜその答えになるのか?」を根本から理解できるような記事を目指します。それでは、早速始めましょう!


情報処理安全確保支援士試験 令和6年度 春期 午後 問3

【出典:情報処理安全確保支援士試験 令和6年度 春期 午後 問3(一部、加工あり)】

問3 Webセキュリティに関する次の記述を読んで、設問に答えよ。

 D社は、従業員1,000名の小売業である。自社のホームページやECサイトなどのWebサイトについては、Webアプリケーションプログラム(以下、Webアプリという)に対する診断(以下、Webアプリ診断という)を専門会社のZ社に委託して実施している。Webアプリ診断は、Webサイトのリリース前だけではなく、リリース後も定期的に実施している。Z社のWebアプリ診断は、脆弱性診断ツールによるスキャンだけではなく、手動による高度な分析も行う。

[新たなWebサイトの構築]
 D社では、新たにECサイトX(以下、サイトXという)と商品企画サイトY(以下、サイトYという)をW社が提供するクラウドサービス(以下、クラウドWという)上に構築することになった。
 サイトXでは、D社が取り扱う商品をインターネットを介して会員に販売する予定である。取引は毎月10,000件ほどを見込んでいる。サイトYでは、サイトXで販売する新商品の企画・開発を顧客参加型で行う。サイトXとサイトYは、いずれもWebサーバとデータベースサーバ(以下、DBサーバという)で構成する。WebサーバについてはクラウドWの仮想Webサーバサービスを利用し、DBサーバについてはクラウドWのリレーショナルデータベースサービスを利用する。サイトXとサイトYはいずれも、コンテンツマネジメントシステム(以下、CMSという)を使って構築される。サイトXとサイトYにはいずれも、Webアプリ、HTMLによる静的コンテンツ、DBサーバに格納したデータを使った動的コンテンツなどを用意する。
 D社は、V大学と新商品開発の共同研究を行っている。新商品開発の共同研究では、V大学を運用する情報交換サイト(以下、サイトPという)を利用している。サイトYは、サイトPで取り扱っている情報などを表示する。
 D社は、Webサイト構築に関連するデータやドキュメントの保守場所としてクラウドWのストレージサービス(以下、ストレージWという)を利用する。
 D社は、サイトX及びサイトYの設計書を作成した。設計書のうち、サイトX、サイトY及びサイトPのネットワーク構成を図1に、サーバやサービスの説明を図2に示す。


[サイトX]
 サイトXには、会員用の利用者アカウントとD社管理者用の利用者アカウントがある。サイトXのログインセッション管理は、cookieパラメータのSESSIONIDで行う。SESSIONIDには、鍵とSecure属性だけがセットされる。なお、サーバ側のセッションの有効期間は24時間である。設計書のうち、サイトXの機能一覧を表1に示す。


 サイト管理機能は、D社の内部ネットワーク以外からも利用する可能性があり、サイトXでは、接続元の制限は行わない。
 サイトXとサイトYの構築は順調に進み、D社はリリース前のWebアプリ診断をZ社に委託した。Z社は、サイトXとサイトYそれぞれに対してWebアプリ診断を実施した。

[サイトXに対するWebアプリ診断]
 サイトXに対するWebアプリ診断では、次の三つの脆弱性が検出された。


[XSSについて]
 Z社がXSSを検出した経緯は、次のとおりであった。
⑴問合せ機能で、脆弱性診断ツールによるリクエストとレスポンスを確認した。このときのリクエストとレスポンスは、図3のとおりであった。


⑵図3中のレスポンスボディには、問合せ機能で入力した値は出力されていない。しかし、Z社は、①設計書を調査した上で手動による分析を行い、図3中のリクエスト内のスクリプトが別の機能の画面に出力されることを確認した

 Z社は、②攻撃者がこのXSSを悪用してサイトX内の全会員の利用者情報を取得する可能性があると説明した。

まずは問題の状況整理から

複雑な長文問題を解くコツは、まず登場人物と状況を正確に把握することです。今回のシナリオを簡潔にまとめてみましょう。

今回は、このうちの一つ「XSS」に関する設問を見ていきます。

XSS(クロスサイトスクリプティング)とは?

本題に入る前に、XSSについて簡単におさらいしましょう。

XSSとは、Webサイトの脆弱性を利用して、悪意のあるスクリプトを他人のWebブラウザ上で実行させる攻撃です。ユーザーが入力した内容をWebページに表示する機能、例えば掲示板や問合せフォームなどで、入力値のチェックや無害化(エスケープ処理)が不十分な場合に発生します。

今回の問題で登場するXSSは、特に「蓄積型XSS(Stored XSS)」と呼ばれるタイプです。

問合せフォームから投稿された悪意あるスクリプトがサーバに保存され、それを管理者が閲覧したときに攻撃が発動する…まさに今回のケースですね!

【設問1 (1)】スクリプトはどこで実行されるのか?

(1) 本文中の下線①について、図3中のリクエスト内のスクリプトが出力されるのはどの機能か。表1の詳細機能に対する項番を選び答えよ。

これは、攻撃の「現場」を特定する問題です。落ち着いて本文の情報を追っていきましょう。

  1. 攻撃の起点: 攻撃者は「問合せ機能」を使いました。図3のリクエストを見ると、nameパラメータにスクリプト(<script>alert(1)</script>)を埋め込んで送信しています。
  2. 重要なヒント: 本文の(2)に、「①設計書を調査した上で手動による分析を行い、図3中のリクエスト内のスクリプトが別の機能の画面に出力されることを確認した」とあります。
  3. 機能の特定: 「問合せ機能」で入力された情報が、どこで閲覧・出力されるのか。これをサイトXの機能一覧(表1)で探します。
項番機能詳細機能機能概要
5利用者機能
(ログイン後)
問合せ機能問合せ情報を入力できる。
9サイト管理機能
(ログイン後)
問合せ管理機能問合せ機能で入力された問合せ情報が閲覧できる。

表1を見ると、項番5の「問合せ機能」で入力された内容は、項番9の「問合せ管理機能」で閲覧されることが分かります。 つまり、攻撃者が仕掛けたスクリプトは、管理者がこの「問合せ管理機能」の画面を開いた時に実行されるわけですね。

したがって、解答は「9」となります。

【設問1 (2)】管理者権限を奪い、全会員情報を盗む手口とは?

(2) 本文中の下線②について、攻撃者はどのような手順で利用者情報を取得するか。具体的に答えよ。

この問題は【採点講評】で「正答率が低かった」と指摘されています。 ポイントは、「問合せ管理機能でスクリプトを実行できるのは管理者である」という事実と、「会員情報を取得できるのは会員管理機能である」という事実を、どう結びつけて攻撃シナリオを組み立てるか、です。

では、攻撃の全体像をステップ・バイ・ステップで見ていきましょう。

ゴール: サイトXの全会員の利用者情報を取得する。
武器: 問合せ管理機能における蓄積型XSS脆弱性。

【攻撃シナリオ】

  1. 【準備】悪意あるスクリプトの仕込み
    攻撃者は、サイトXの「問合せ機能」を利用します。その際、問合せ内容(図3のnameパラメータなど)に、「管理者のCookie情報を盗み出し、攻撃者が用意した外部のWebサイトに送信する」という動作をするJavaScriptコードを埋め込んで投稿します。 この投稿はデータベースに保存されます。
  2. 【発動】管理者の閲覧
    何も知らないD社の管理者が、日課の業務としてサイトXにログインし、「問合せ管理機能」(設問1(1)で特定した画面)を開きます。そして、攻撃者が投稿した悪意ある問合せを閲覧します。
  3. 【窃取】Cookie情報の横取り
    管理者が問合せを閲覧した瞬間、仕込まれていたスクリプトが管理者のWebブラウザ上で実行されます。スクリプトは、管理者のログイン状態を維持しているセッションID(SESSIONID) を含むCookie情報を取得し、ひそかに攻撃者のWebサイトへ送信します。
  4. 【侵入】なりすましと情報漏えい
    攻撃者は、まんまと盗み出した管理者のセッションIDを手に入れます。このセッションIDを自身のブラウザに設定することで、管理者としてサイトXにログイン(なりすまし)することが可能になります。 管理者になりすました攻撃者は、管理者権限でしか利用できない「会員管理機能」(表1の項番8) にアクセスし、サイトXに登録されている全会員の情報を閲覧・取得してしまうのです。

この一連の流れが、XSS脆弱性を悪用して利用者情報を取得する具体的な手順です。 解答例はこの流れを要約したものですが、背景にあるこのメカニズムを理解することが、応用力を身に付ける上で非常に重要です。


解答例:攻撃者がわなリンクを用意し、管理者にそのリンクを踏ませることで管理者権限のcookieを攻撃者のWebサイトに送信させ、その値を読み取って利用することで管理者としてサイトXにアクセスし、利用者情報を取得する。

まとめ:XSS対策の基本と重要性

今回の問題を通して、以下の重要なポイントを再確認できました。

【出題趣旨】にもあるように、これらの脆弱性はIPAの「安全なウェブサイトの作り方」でも繰り返し注意喚起されています。 開発者の理解不足が、思わぬセキュリティホールを生んでしまうという、実務にも通じる教訓が得られる問題でした。


いかがでしたでしょうか。今回は設問1のXSSに焦点を当てて解説しました。 次回は、同じく正答率が低かった【設問2】のCSRF(クロスサイトリクエストフォージェリ)について掘り下げていきますので、ぜひそちらもチェックしてくださいね!

モバイルバージョンを終了