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

【情報処理安全確保支援士試験 令和6年度 春期 午後 問3 No.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内の全会員の利用者情報を取得する可能性があると説明した。

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

図3中のレスポンスボディには、問合せ機能で入力した値は出力されていない。しかし、Z社は、①設計書を調査した上で手動による分析を行い、図3中のリクエスト内のスクリプトが別の機能の画面に出力されることを確認した
 クロスサイトスクリプティング(XSS:Cross-Site Scripting)は、Webアプリケーションの代表的な脆弱性の一つで、攻撃者が悪意あるスクリプトをWebページに埋め込み、ユーザのブラウザ上で実行させる攻撃です。
 具体的には、XSSでは、Webサイトの表示内容に悪意あるスクリプト(JavaScriptなど)を混入させ、それを他のユーザのブラウザで実行させます。
 例えば、掲示板や問い合わせフォームに、「<script>document.cookie</script>」のようなJavaScriptコードを入力されたとすると、この内容がそのまま画面に表示されると、そのページを閲覧した他のユーザのブラウザでスクリプトが実行され、セッションID(クッキー)などの情報が盗まれる危険があります。
 XSSの危険性としては、以下のようなものが挙げられます。

 XSSの主な種類を以下に示します。

種類説明
反射型XSS(非持続型)入力されたスクリプトが即座にレスポンスに反映される。攻撃者はURLにスクリプトを仕込み、ユーザに踏ませることで実行させる。
保存型XSS(持続型)入力されたスクリプトがDBなどに保存され、他ユーザがページを閲覧した際に実行される。掲示板やコメント欄などが狙われやすい。
DOMベースXSSスクリプトがWebページのJavaScript内で動的に処理されることによって発生する。サーバではなく、クライアント側で処理されるXSS。


 XSSに対するの主な対策を以下に示します。

対策内容
出力時のエスケープユーザ入力をHTMLに出力する際、<>&lt;&gt; に変換する
Content Security Policy(CSP)外部スクリプトやインラインスクリプトの実行を制限する
HTTPOnly属性セッションIDなどを含むCookieに HttpOnly 属性をつけ、JavaScriptからアクセス不可にする
入力のバリデーションJavaScriptやHTMLタグを入力させない(ただし、出力エスケープが最重要)


 設問ですが、XSSの焦点としては、どの機能でスクリプトが出力されたのか(=画面に入力内容が表示されるのか)を確認します。
 表1「サイトXの機能一覧(抜粋)」の中から、問合せ内容が表示される可能性がある機能を探します。

 項番5(問合せ機能)に入力した問合せ情報は、項番9(問合せ管理機能)に表示されることが分かります。
 この表示処理の中で、エスケープ処理が不適切だと、入力内容に含まれるスクリプトがそのまま実行される可能性がある=XSSが成立することになります。
 なお、本問では、「問い合わせフォーム」に入力されたスクリプトが、後の「問い合わせ管理機能」で表示され、保存型XSS(持続型XSS)が発生したケースでした。

下線②について、攻撃者はどのような手順で利用者情報を取得するか。具体的に答えよ。:攻撃者がわなリンクを用意し、管理者にそのリンクを踏ませることで管理者権限のcookieを攻撃者のWebサイトに送信させ、その値を読み取って利用することで管理者としてサイトXにアクセスし、利用者情報を取得する。

Z社は、②攻撃者がこのXSSを悪用してサイトX内の全会員の利用者情報を取得する可能性があると説明した。
 前の設問で、XSSが問合せ機能(表1の項番5)で検出され、問合せ管理機能(表1の項番9)で出力されることが分かりました。
 その他、サイトXへのXSSの攻撃について、問題文からヒントになるような記述を確認します。

 これらの記述から具体的な攻撃手順を考えます。

  1. 攻撃者は、問い合わせ機能(項番5)から、cookieを取得するスクリプトを送信します。
  2. この問い合わせ内容はDBに保存され、問い合わせ管理機能(項番9)で表示されます。
    つまり、管理者がこの画面を開いた際に、上記スクリプトが実行されます。
  3. JavaScriptでcookieを取得でき、SESSIONID(セッションID)が攻撃者のサイトに送信されます。
  4. 攻撃者はこのセッションIDを使ってD社の管理者としてサイトXにログインし、管理者権限で「利用者情報管理機能(項番8)」を実行し、全会員の利用者情報が取得可能となります。

 この攻撃は、「保存型XSS」+「cookieのセキュリティ設定不備」+「管理者のWebアクセス」が組み合わさって成立するものです。
 XSSでは、JavaScriptによってcookieを読み取り、セッションIDを盗むことが可能です。
 HttpOnly属性を設定しておけば、JavaScriptからはcookieにアクセスできなくなります。
 つまり、cookieを盗まれるリスクを軽減できます。
 HttpOnlyを付けても、Webサーバとの通信では通常どおりcookieは送信されるので、ログイン状態は維持されます。

アクセス方法HttpOnlyなしHttpOnlyあり
JavaScript可能不可能
HTTP通信可能可能


 一般的に、Webセキュリティ対策の基本として、以下の属性を併用することが推奨されます。

 なお、IPAの採点講評では「正答率が低かった。クロスサイトスクリプティング(XSS)の検出箇所から、問合せ管理機能でスクリプトを実行できるのは管理者であることが分かる。一方、サイトXの機能概要から、利用者情報を取得するには、会員管理機能を利用すればよいことが分かる。この二つをどう結びつけるかを考えて、解答してほしい。」とありました。

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