対象試験と出題頻度
詳細をクリックして確認
ITパスポート
情報セキュリティマネジメント
基本情報技術者
応用情報技術者
★★★★★
ランクS(必須・超頻出)
用語の定義
クロスサイトスクリプティング(XSS)とは、一言で言うと「Webページに悪意のあるスクリプトを埋め込み、そのページを見た人のブラウザで不正なプログラムを実行させる攻撃」のことです。
イメージとしては、「掲示板に貼られたメモに、『このメモを読んだ人は財布の中身を見せてください』という催眠術が仕込まれている」ようなものです。
攻撃者が仕掛けた罠を、何も知らない利用者が踏んでしまうことで、Cookie情報の窃取やフィッシングサイトへの誘導などの被害が発生します。
解説
クロスサイトスクリプティング(Cross-Site Scripting、略称XSS)は、Webアプリケーションの脆弱性を悪用した攻撃手法です。「CSS」と略すとスタイルシート(Cascading Style Sheets)と混同するため、「XSS」と表記されます。攻撃者は、掲示板やコメント欄などユーザーが入力できる箇所に悪意のあるJavaScriptコードを埋め込み、そのページを閲覧した他のユーザーのブラウザ上でスクリプトを実行させます。
- 反射型(Reflected XSS):攻撃者が用意した悪意のあるURLをクリックさせ、その場でスクリプトを実行させるタイプ。フィッシングメールなどと組み合わせて使われます。
- 格納型(Stored XSS):悪意のあるスクリプトがWebサーバーのデータベースに保存され、ページを閲覧するたびに実行されるタイプ。掲示板やSNSなどで発生しやすいです。
- DOM Based XSS:サーバーを経由せず、クライアント側のJavaScript処理の脆弱性を突いて攻撃するタイプです。
XSS攻撃による被害は深刻で、セッションIDの窃取によるなりすまし(セッションハイジャック)、個人情報の漏えい、マルウェア配布サイトへの誘導、Webページの改ざんなどが発生します。OWASP Top 10でも常に上位にランクインする、Webセキュリティにおける最重要脅威の一つです。
具体的な活用例・対策
XSS対策は、Webアプリケーション開発において必須のセキュリティ対策です。入力と出力の両面から対策を講じる必要があります。
- 出力時のエスケープ処理(サニタイジング): HTMLに出力する際、「<」「>」「&」「”」「’」などの特殊文字をHTMLエンティティに変換し、スクリプトとして解釈されないようにします。最も基本的かつ重要な対策です。
- 入力値の検証(バリデーション): ユーザーからの入力値が想定された形式かどうかをサーバー側でチェックします。ただし、これだけでは不十分で、出力時のエスケープと併用が必要です。
- Content Security Policy(CSP)の設定: HTTPヘッダーでスクリプトの実行元を制限し、インラインスクリプトや外部スクリプトの実行を制御します。
- HttpOnly属性の付与: CookieにHttpOnly属性を設定し、JavaScriptからCookieにアクセスできないようにすることで、セッションIDの窃取を防ぎます。
- WAF(Web Application Firewall): 不正なスクリプトパターンを検知・遮断するセキュリティ製品を導入します。
試験ではこう出る!
ITパスポート、情報セキュリティマネジメント、基本情報技術者、応用情報技術者のすべてで頻出です。以下のキーワードとセットで覚えましょう。
【重要キーワード】
- エスケープ処理(サニタイジング)
- Cookie窃取・セッションハイジャック
- Content Security Policy(CSP)
- HttpOnly属性
- OWASP Top 10
試験問題で「Webページに悪意のあるスクリプトを埋め込み、閲覧者のブラウザで実行させる攻撃」や「エスケープ処理(サニタイジング)によって防げる攻撃」といった記述があれば、それは「クロスサイトスクリプティング(XSS)」に関する記述です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. クロスサイトスクリプティング(XSS)に関する説明として、最も適切なものはどれでしょうか?
- A. Webページに悪意のあるスクリプトを埋め込み、閲覧者のブラウザ上で不正なプログラムを実行させる攻撃
- B. Webアプリの入力欄に不正なSQL文を挿入し、データベースを不正に操作する攻撃
- C. 利用者が意図しないリクエストを強制的に実行させ、掲示板への書き込みや設定変更を行わせる攻撃
正解と解説を見る
正解:A
解説:
クロスサイトスクリプティング(XSS)は、Webページに悪意のあるスクリプト(主にJavaScript)を埋め込み、そのページを閲覧したユーザーのブラウザ上で不正なプログラムを実行させる攻撃です。対策としてはエスケープ処理(サニタイジング)やContent Security Policy(CSP)の設定が有効です。
選択肢Bは「SQLインジェクション」の説明です。選択肢Cは「クロスサイトリクエストフォージェリ(CSRF)」の説明であり、いずれもXSSとは異なる攻撃手法です。