クロスサイトスクリプティングとは

クロスサイトスクリプティング(Cross Site Scripting)とは、Webアプリケーションの脆弱性の一種、またはそれを突く攻撃手法の名称のことだ。

» 2018年02月13日 05時00分 公開

 クロスサイトスクリプティング(Cross Site Scripting)とは、Webアプリケーションの脆弱(ぜいじゃく)性の一種、またはそれを突く攻撃手法の名称のことだ。「XSS」という略称が用いられることも多い。

 Webアプリケーションのユーザーを標的とする攻撃手法であり、標的ユーザーへのなりすましや、標的ユーザーしか知り得ない情報の漏えいなどにつながることが知られている一方、情報処理推進機構発行の「ソフトウェア等の脆弱性関連情報の取扱いに関する届出状況[2016年第2四半期(4月〜6月)]」では、Webサイトで発見、報告された脆弱性の過半数がクロスサイトスクリプティングであると報告されているなど、日々多くのWebサイトでクロスサイトスクリプティングが発見されている現状がある。

 クロスサイトスクリプティングの多くは、ユーザーから受け取った値(例えば、検索キーワードなど)をWebページ上に表示する処理の不備によって生じる。攻撃者は検索キーワードなどのユーザー入力値に、不正なHTMLタグやJavaScriptのコードなどを埋め込み、脆弱なWebページ上へのアクセス時にそれらのタグやコードが実行される状態にする。その上で、不正なタグやコードを含むWebページへと標的ユーザーを誘導し、標的ユーザーのWebブラウザで不正なタグやコードを実行させることにより、さまざまな不正を行う。

 例えば、クロスサイトスクリプティングに対して脆弱な検索フォームでは、下記のようなシナリオが成立し得る。

  1. 攻撃者は不正なタグやコードが含まれた検索キーワードを用いて検索を実行する
  2. Webアプリケーションは入力された不正なタグやコードを検索結果のページ上にそのまま表示する
  3. 攻撃者は、標的ユーザーが不正なタグやコードが含まれる検索結果のURLにアクセスするように誘導する
  4. 検索結果のページにアクセスした標的ユーザーのWebブラウザ上で不正なタグやコードが動作する

 対策としては、ユーザーから受け取った値をWebページ上に表示する際に、HTMLタグやJavaScriptのコード中において特殊な意味合いを持つ文字()を、文字実体参照やUnicodeエスケープシーケンスに変換するエスケープ処理などが有効であると知られている。

そういった特殊な文字を「メタキャラクタ」と呼ぶ。メタキャラクタの種類やそれらに対応するエスケープ方法は、ユーザー入力値がWebページ上のどこに表示されるかによって異なる。

関連用語

フットプリンティング
ブラウザクラッシャー
ブルートフォースアタック

■更新履歴

【2004/1/1】初版公開。

【2018/2/13】最新情報に合わせて内容を書き直しました(セキュリティ・キャンプ実施協議会 著)。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。