検索
連載

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

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

Share
Tweet
LINE
Hatena

 クロスサイトスクリプティング(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.

Security & Trust 記事ランキング

  1. 「SMSは認証に使わないで」 米CISA、モバイル通信を保護する8つのベストプラクティスを公開
  2. 3割程度のSaaS事業者が標準的なセキュリティ対策をしていない アシュアードがSaaS事業者を調査
  3. 「このままゼロトラストへ進んでいいの?」と迷う企業やこれから入門する企業も必見、ゼロトラストの本質、始め方/進め方が分かる無料の電子書籍
  4. 中小企業の20%の経営層は「自社はサイバー攻撃に遭わない」と信じている バラクーダネットワークス調査
  5. AWS、組織のセキュリティインシデント対応を支援する「AWS Security Incident Response」を発表 アラートに圧倒されるセキュリティチームをどう支援?
  6. 「生成AIのサイバー攻撃への悪用」は増加する? 徳丸浩氏が予測する2025年のセキュリティ
  7. ChatGPTやClaudeのAPIアクセスをかたってマルウェアを配布するPython用パッケージ確認 Kasperskyが注意喚起
  8. 高度なAIでAIをテスト OpenAIが実践するAIモデルのレッドチーム演習とは
  9. 日本人の約半数が「1年前より危険」と考えるオンライン詐欺とは マカフィーがホリデーショッピング詐欺に関して調査
  10. 商用国家安全保障アルゴリズム(CNSA)の期限となる2030年までに暗号化/キー管理サービス市場が60億ドルに達するとABI Researchが予測 急成長の要因とは?
ページトップに戻る