ITパスポート試験 用語辞典
【Cross Site Scripting】
(Wikipedia クロスサイトスクリプティングより)
クロスサイトスクリプティング(cross site scripting)とは、ウェブページの部分をユーザからの入力をそのままエコーバック(おうむ返し)することによって生成しているアプリケーションのセキュリティ上の不備を利用して、サイト間を横断して悪意のあるスクリプトを注入する攻撃のことをいう。また経緯上、それを許してしまう脆弱性についても、このように呼ばれている。
略記として、CSSおよびXSSがある。CSSは同分野でよく使用されるCascading Style Sheetsの略語と同じになってしまうため、混同を避けるためにXSSと表記されることが多くなった。
概要
典型的には、攻撃者が攻略対象となるウェブサイトとは異なるサイトからスクリプトを送り込み、訪問者に実行させるので、「クロスサイト(サイトを横断した)スクリプティング(スクリプト処理)」と呼ばれる。
ウェブアプリケーションが入力したデータ(フォーム入力など)を適切にエスケープしないままHTML中に出力することにより、入力中に存在するタグ等文字がそのままHTMLとして解釈される。ここでスクリプトを起動させることにより、以下に挙げるような攻撃が成立する。
- クッキーの値を取得あるいは設定することにより、セッションハイジャックする。
- 強制的なページ遷移を起こさせ、クロスサイトリクエストフォージェリ対策を回避する。取得したクッキーを攻撃者側でそのまま利用できない場合に用いられる手法。
- CSSのインポート機能を利用して不正なファイルをロードさせる。
- ページ全体を置き換えることにより、偽のページを作り出す。典型的にはフィッシングに用いられる。
- フォームの送信先を置換することにより、入力を第三者サイトに送信するよう仕向ける。
これらの攻撃が成立することにより、秘密情報の窃取や、回復不可能な権利侵害につながるおそれがある。
原理
フォームから入力された情報を表示するサイトがあり、このサイトでは以下のようなウェブページを動的に生成していると仮定する。
<p>Hello, (フォームで入力した値)</p>このサイトで、フォームに JavaScript のコード、例えば、
<script>alert("警告")</script>
等を入力したとする。このサイトが、入力を適切にエスケープしていない場合、上記のページは以下のように生成される。<p>Hello, <script>alert("警告")</script></p>このページを受信したウェブブラウザは、このスクリプトを実行し、画面上に「警告」と表示されたメッセージボックスを出力する。
対策
クロスサイトスクリプティングの対策は、いくつかの例外を除き、出力値のエスケープを適切に施すことである。
- HTMLの実体参照を用い、
&
を&
に、<
を<
に、>
を>
に、"
を"
に、それぞれ置換する。- タグの属性値は必ず
"~"
(ダブルクオート)で括る。また属性値中のエスケープを忘れない。例:<input type="hidden" name="foo" value="<script>">
例外は以下のような場合である。
- 入力値をURIとして用いる場合(リダイレクタなど)
- 許可するスキームを定め、それ以外のスキームを持つURIは拒否する。
- 入力値をスタイルシートとして使用する場合
- 許可する構文を定め、それ以外の使用は拒否する。スタイルシート中のスクリプト起動方法は多様であり、ブラックリスト方式で完全に抑制することは難しい。
- 入力中の一定のタグをHTMLとして反映したい場合(例: ウィキ)
- ホワイトリスト(許可リスト)を使用した出力タグ、あるいは属性の制限を行う。制限には上述のURI中のスキーマ制限や、スタイルシートへの制限を含む。
周辺
基本的にはウェブサイト側の脆弱性を突いて、ウェブサイトにアクセスした利用者に任意のスクリプトを実行させる状況であるため、ウェブサイト管理者側が脆弱性対策を行わずに放置したような場合、サイト利用者側が取れる根本的な対策はほとんどない。
利用者側のポリシーとして「怪しいサイトには行かない」では不十分であり、「脆弱性の対策をしていないサイトは利用しない」という、一般人は有効に適用できそうもないポリシーを取るしかない。
その唯一の例外としては、JavaScriptやActiveXなどを含むブラウザーのスクリプトを無効にすること、スクリプトや動的生成ページを使用しない静的ページのみにアクセスを限定する、という程度である。
ただ、wiki、ブログ、SNSなど、近年のウェブサイトはそのほとんどがスクリプトを用いて動的に生成されているため、インターネット利用者が上記の対策を行った上でウェブサイトを利用することは不可能に近い。
出題例
- Webサイトの運営者が意図しないスクリプトを含むデータであっても,利用者のブラウザに送ってしまう脆弱性を利用する。
- Webページの入力項目にOSの操作コマンドを埋め込んでWebサーバに送信し,サーバを不正に操作する。
- 複数のWebサイトに対して,ログインIDとパスワードを同じものに設定するという利用者の習性を悪用する。
- 利用者に有用なソフトウェアと見せかけて,悪意のあるソフトウェアをインストールさせ,利用者のコンピュータに侵入する。
正解
- 盗み見
- クラッキング
- ソーシャルエンジニアリング
- ビジネスメール詐欺
- ダークウェブ
- マルウェア
- ボット
- スパイウェア
- ランサムウェア
- ファイルレスマルウェア
- ワーム
- トロイの木馬
- RAT
- マクロウイルス
- ガンブラー
- キーロガー
- バックドア
- ファイル交換ソフトウェア
- セキュリティホール
- シャドーIT
- 不正のトライアングル
- 辞書攻撃
- 総当たり攻撃
- パスワードリスト攻撃
- クロスサイトスクリプティング
- クロスサイトリクエストフォージェリ
- クリックジャッキング
- ドライブバイダウンロード
- SQLインジェクション
- ディレクトリトラバーサル
- 中間者攻撃
- MITB攻撃
- 第三者中継
- IPスプーフィング
- キャッシュポイズニング
- セッションハイジャック
- DoS攻撃
- DDoS攻撃
- クリプトジャッキング
- 標的型攻撃
- 水飲み場型攻撃
- やり取り型攻撃
- フィッシング
- ワンクリック詐欺
- ゼロデイ攻撃
- プロンプトインジェクション攻撃
- 敵対的サンプル
- ポートスキャン
- ウォードライビング
- サラミ法
- バッファオーバフロー攻撃
- 基礎理論(23)
- アルゴリズムとプログラミング(27)
- コンピュータ構成要素(32)
- システム構成要素(29)
- ソフトウェア(17)
- ハードウェア(14)
- 情報デザイン(21)
- 情報メディア(28)
- データベース(19)
- ネットワーク(71)
- セキュリティ(121)
このページのWikipediaよりの記事は、ウィキペディアの「クロスサイトスクリプティング」(改訂履歴)の記事を複製、再配布したものにあたり、このページ内の該当部分はクリエイティブ・コモンズ 表示 - 継承 3.0 非移植 ライセンスの下 に提供されています。