情報セキュリティマネジメント 2016年 秋期 午前(科目A) 問22
問題文
クロスサイトスクリプティングの手口はどれか。
選択肢
ア:Webアプリケーションに用意された入力フィールドに、悪意のあるJavaScriptコードを含んだデータを入力する。(正解)
イ:インターネットなどのネットワークを通じてサーバに不正にアクセスしたり、データの改ざんや破壊を行ったりする。
ウ:大量のデータをWebアプリケーションに送ることによって、用意されたバッファ領域をあふれさせる。
エ:パス名を推定することによって、本来は認証された後にしかアクセスが許可されないページに直接ジャンプする。
🔒 解説は解答すると表示されます
クロスサイトスクリプティング【情報セキュリティマネジメント解説】
正解の理由
ウェブページに悪意あるスクリプトを注入する攻撃が「クロスサイトスクリプティング(Cross-Site Scripting:略してXSS)」です。XSSは利用者のブラウザ上で動くスクリプト(多くはJavaScript)を埋め込んで、クッキーの窃取や画面改ざん、偽フォーム表示などを行います。設問の選択肢のうち、入力フォームに悪意のあるJavaScriptを含むデータを入れる行為を説明しているのが ア であり、これがXSSを正確に示しています。
解法ステップ
- 問題文でキーとなる語句を探す:「入力フィールド」「JavaScript」「Webアプリケーション」など。これらはXSSを示唆します。
- 他の選択肢のキーワードと照合する:ネットワーク経由の不正アクセス、バッファ溢れ、パス名推定はそれぞれ別の攻撃を表します。
- XSSの定義を思い出す:「Webページにスクリプトを注入して、利用者のブラウザでそれを実行させる攻撃」。該当する選択肢を選ぶ。
選択肢別の誤答解説
- ア: Webアプリケーションに用意された入力フィールドに、悪意のあるJavaScriptコードを含んだデータを入力する。
- これはXSSの典型的な手口です。ユーザ入力を適切に無害化(サニタイズ)せずにそのまま表示すると、ブラウザがそのスクリプトを実行してしまいます。→ 正解
- イ: インターネットなどのネットワークを通じてサーバに不正にアクセスしたり、データの改ざんや破壊を行ったりする。
- これは「不正アクセス」や「クラッキング」など、サーバ側への侵入や改ざんを指します。XSSは主にクライアント(利用者のブラウザ)上で悪影響を起こす点が異なります。
- ウ: 大量のデータをWebアプリケーションに送ることによって、用意されたバッファ領域をあふれさせる。
- これは「バッファオーバーフロー(バッファ溢れ)」です。メモリ上の領域を越えて書き込ませ、プログラム制御を奪う攻撃で、XSSとは技術的に別物です。
- エ: パス名を推定することによって、本来は認証された後にしかアクセスが許可されないページに直接ジャンプする。
- これは「予測可能なURLによる不正アクセス(直接オブジェクト参照の不備やディレクトリトラバーサル等)」に近い問題です。認可(アクセス権)の実装ミスを突く手口で、XSSではありません。
よくある誤解
- XSSは「サーバを壊す攻撃」だと考える誤解:XSSは多くの場合、サーバ自体を破壊するものではなく、利用者のブラウザで悪意あるスクリプトを実行させる攻撃です。被害は個々のユーザやセッション情報に及ぶことが多い点を押さえてください。
- XSSとSQLインジェクションを混同する:どちらも入力を悪用しますが、XSSはブラウザでのスクリプト実行を狙い、SQLインジェクションはデータベースへの不正操作を狙います。攻撃対象が異なります。
- 「入力を消せばいい」と単純化する誤解:入力を削除するのではなく、出力時に適切なエンコーディング(HTMLエスケープ)やサニタイズを行うことが重要です。
補足コラム
- XSSの種類(簡潔)
- 反射型(Reflected XSS):リンクなどに悪意のスクリプトを含ませ、ユーザがそのリンクを開くと即座に実行される。
- 保管型/蓄積型(Stored/Persistent XSS):掲示板やコメント欄などに悪意のスクリプトが保存され、閲覧者全員に影響する。被害範囲が広く危険。
- DOM-based XSS:ページのクライアント側(ブラウザ内)で動作するスクリプトが不適切にデータを扱い、スクリプトを生成してしまうタイプ。
- 防御策(現場での実践例)
- 出力時のエスケープ(HTMLエンコーディング)を徹底する。
- Content Security Policy(CSP)を設定して、許可されたスクリプトのみ実行する。
- クッキーに HttpOnly 属性を付けて、JavaScriptから読み取れないようにする(セッション盗用の防止)。
- ユーザ入力を受け付ける機能は設計段階でセキュリティレビューを行う。外部委託する場合は、XSS対策の実施を契約に明記する。
職場の具体例:社内の問い合わせフォームや掲示板を運用する場合、開発者に「ユーザ入力は必ず出力時にエスケープする」「管理者側でXSSテストを行う」ことを依頼します。外部に委託している場合は、納品物のセキュリティ仕様書にXSS対策項目を入れるとよいでしょう。
FAQ
Q. XSSで盗まれる代表的な情報は何ですか?
A. セッションIDやクッキー、ログインフォームの入力内容などが狙われます。これによりアカウント乗っ取りや偽送金などに繋がる恐れがあります。
A. セッションIDやクッキー、ログインフォームの入力内容などが狙われます。これによりアカウント乗っ取りや偽送金などに繋がる恐れがあります。
Q. ブラウザ側で何か対策できますか?
A. 一般ユーザはブラウザ拡張でスクリプト実行を制限するツールを使えますが、根本対策はサーバ/アプリ側での対処です。HttpOnlyやCSPの設定は有効です。
A. 一般ユーザはブラウザ拡張でスクリプト実行を制限するツールを使えますが、根本対策はサーバ/アプリ側での対処です。HttpOnlyやCSPの設定は有効です。
Q. XSSとCSRF(Cross-Site Request Forgery:別サイトからの不正な操作要求)はどう違いますか?
A. XSSは悪意のスクリプトを埋め込むことで任意のコードをユーザのブラウザで実行させます。CSRFはユーザが認証済みの状態を利用して、利用者の意図しない操作をサーバに行わせる攻撃です。両者は用途も防御策も異なりますが、複合的に悪用されることがあります。
A. XSSは悪意のスクリプトを埋め込むことで任意のコードをユーザのブラウザで実行させます。CSRFはユーザが認証済みの状態を利用して、利用者の意図しない操作をサーバに行わせる攻撃です。両者は用途も防御策も異なりますが、複合的に悪用されることがあります。
関連キーワード: クロスサイトスクリプティング、XSS、反射型XSS、保管型XSS、DOM-based XSS、入力検証、出力エンコーディング、Content Security Policy、HttpOnly、セッションハイジャック、バッファオーバーフロー、直接オブジェクト参照、不正アクセス

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

