情報セキュリティマネジメント 2016年 春期 午前(科目A) 問21
問題文
クロスサイトスクリプティングに該当するものはどれか。
選択肢
ア:Webアプリケーションのデータ操作言語の呼出し方に不備がある場合に、攻撃者が悪意をもって構成した文字列を入力することによって、データベースのデータの不正な取得、改ざん及び削除を可能とする。
イ:Webサイトに対して、他のサイトを介して大量のパケットを送り付け、そのネットワークトラフィックを異常に高めてサービスを提供不能にする。
ウ:確保されているメモリ空間の下限又は上限を超えてデータの書込みと読出しを行うことによって、プログラムを異常終了させたりデータエリアに挿入された不正なコードを実行させたりする。
エ:攻撃者が罠を仕掛けたWebページを利用者が閲覧し、当該ページ内のリンクをクリックしたときに、不正スクリプトを含む文字列が脆弱なWebサーバに送り込まれ、レスポンスに埋め込まれた不正スクリプトの実行によって、情報漏えいをもたらす。(正解)
🔒 解説は解答すると表示されます
クロスサイトスクリプティング【情報セキュリティマネジメント解説】
正解の理由
エは、攻撃者が仕掛けたページを利用者が閲覧またはクリックしたときに、不正なスクリプト(JavaScriptなど)が脆弱なウェブサーバのレスポンスに埋め込まれ、利用者のブラウザ上でそのスクリプトが実行されて情報漏えいなどを引き起こす、という流れを説明しています。
これはXSS(XSS=Cross-Site Scripting:クロスサイトスクリプティング)そのものの特徴です。XSSは「攻撃コードが利用者のブラウザで実行される」点が本質であり、選択肢の他の説明(データベースの操作や大量パケット、メモリ破壊)とは明確に異なります。
これはXSS(XSS=Cross-Site Scripting:クロスサイトスクリプティング)そのものの特徴です。XSSは「攻撃コードが利用者のブラウザで実行される」点が本質であり、選択肢の他の説明(データベースの操作や大量パケット、メモリ破壊)とは明確に異なります。
解法ステップ
- まず「何が実行されるか」を探す。攻撃で「スクリプトが利用者のブラウザで実行される」と書かれていればXSSを疑う。
- 次に「攻撃の対象はどこか」を見る。データベースが直接狙われるならSQLインジェクション、ネットワーク帯域を狙うならDDoS、プログラムのメモリを狙うならバッファオーバーフロー。
- 用語チェック:スクリプト、レスポンスに埋め込まれる、閲覧者のブラウザ、これらが揃えばXSSと判断する。
- 選択肢を一つずつ当てはめて、一番一致するものを選ぶ。
短いチェックリスト:
- 「スクリプト」「ブラウザで実行」「レスポンスに埋め込まれる」「情報漏えい」の語があるか → XSS
- 「データベース」「SQL」「データ操作言語」→ SQLインジェクション
- 「大量のパケット」「サービス提供不能」→ DDoS
- 「メモリ」「下限・上限を超える」「不正なコードを実行」→ バッファオーバーフロー
選択肢別の誤答解説
- ア:これはSQLインジェクションの説明です。SQL(Structured Query Language:データベース操作言語)を悪用して、入力欄などに悪意あるSQL文を入れ、データベースの不正取得・改ざん・削除を行います。攻撃の主対象が「データベース」である点でXSSと異なります。
- イ:大量のパケットを送ってネットワークやサービスを停止させる行為はDDoS(Distributed Denial of Service:分散サービス拒否攻撃)です。攻撃の目的が「可用性の低下」であり、ブラウザ上でスクリプトが実行されるタイプの攻撃ではありません。
- ウ:メモリ領域の境界を越えて読み書きする説明はバッファオーバーフロー(バッファ溢れ)です。主にプログラムの脆弱性(C言語等での領域管理不備)を突き、直接サーバ側で異常終了や任意コード実行を引き起こします。ブラウザでスクリプトが実行されるという点がないためXSSとは別物です。
- エ:前述の通り、Webページに仕掛けをして利用者のブラウザで不正スクリプトを実行させ、情報漏えいを引き起こす説明はXSSそのものです。XSSには反射型(reflected)、格納型(stored)、DOM型(DOM-based)などの種類がありますが、選択肢の状況説明は典型的なXSSを表しています。
よくある誤解
- XSSとSQLインジェクションを混同する:どちらも「入力を悪用する攻撃」ですが、狙う場所や被害の現れ方が違います(ブラウザ実行とデータベース操作)。
- XSSは必ずしもサーバを改ざんする必要があるわけではない:脆弱な出力処理(エスケープ不足)だけで成立します。
- 「ユーザがクリックしないと発動しない」は誤り:格納型XSSは被害者が脆弱なページを閲覧するだけで自動的に実行されます。
補足コラム
運用と対策の実務イメージ(職場でどうするか)
- 開発側:入力値の検証(入力検証)と出力時のエスケープ(出力エスケープ)を徹底します。出力エスケープとは、HTMLに埋め込む際に特殊文字を無害化する処理です。
- インフラ/運用側:WAF(Web Application Firewall:Webアプリケーション向けの防御装置)を導入し、既知の攻撃パターンをブロックします。
- ブラウザ制御:CSP(Content Security Policy:コンテンツセキュリティポリシー)を設定して、外部スクリプトやインラインスクリプトの実行を制限します。
- Cookie対策:HttpOnly(JavaScriptから参照不可にするフラグ)やSameSite属性(クロスサイト送信の制御)を使い、クッキーの漏えいリスクを下げます。
- 検査と教育:定期的な脆弱性スキャン、コードレビュー、開発者へのセキュリティ教育を行います。
簡単な攻撃例(概念)
- 悪意あるリンク:?q= のようなパラメータを作り、それをそのままページに書き出すとブラウザで実行される。これが反射型XSSの典型です。
FAQ
Q. XSSで何が盗まれるのですか?
A. クッキー(セッション情報)、フォームの入力内容、ページ上の機密情報、またはユーザ権限でできる操作(なりすまし投稿など)が盗まれたり実行されたりします。
A. クッキー(セッション情報)、フォームの入力内容、ページ上の機密情報、またはユーザ権限でできる操作(なりすまし投稿など)が盗まれたり実行されたりします。
Q. CSRF(Cross-Site Request Forgery:クロスサイトリクエストフォージェリ)とXSSは同じですか?
A. 違います。CSRFは「利用者のブラウザが意図せず送信する正規のリクエスト」を悪用する攻撃で、XSSは「ブラウザで不正スクリプトを実行させる」攻撃です。ただしXSSがあるとCSRF対策が無効化されることもあります。
A. 違います。CSRFは「利用者のブラウザが意図せず送信する正規のリクエスト」を悪用する攻撃で、XSSは「ブラウザで不正スクリプトを実行させる」攻撃です。ただしXSSがあるとCSRF対策が無効化されることもあります。
Q. 入力検証だけでXSSを防げますか?
A. 入力検証は有効ですが、最も重要なのは「出力時のエスケープ」です。どのコンテキスト(HTML、属性、JavaScript、URL)に出力するかで適切なエスケープ方法が変わります。
A. 入力検証は有効ですが、最も重要なのは「出力時のエスケープ」です。どのコンテキスト(HTML、属性、JavaScript、URL)に出力するかで適切なエスケープ方法が変わります。
Q. 利用者の教育で防げますか?
A. 教育は補助になりますが、根本対策はアプリケーション側の適切な処理(エスケープ、CSP、HttpOnly設定など)です。人間だけに頼るのは不十分です。
A. 教育は補助になりますが、根本対策はアプリケーション側の適切な処理(エスケープ、CSP、HttpOnly設定など)です。人間だけに頼るのは不十分です。
関連キーワード: クロスサイトスクリプティング、XSS(Cross-Site Scripting)、出力エスケープ、入力検証、CSP(Content Security Policy)、HttpOnly、WAF、SQLインジェクション、バッファオーバーフロー

\ せっかくなら /
情報セキュリティマネジメントを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

