クロスサイトスクリプティング (XSS) とは何ですか?
クロスサイト スクリプティング (XSS) 攻撃は、信頼できる Web サイトに悪意のあるスクリプトを挿入して訪問者をターゲットにし、将来のやり取りに影響を与えます。XSS 攻撃は長い間存在してきましたが (1999 年に初めて特定されました)、今でもサイバー攻撃の一般的な形態として残っています。実際、 IBM の 2024 年クラウド脅威状況レポートでは、XSS が最も多く発見されたクラウド脆弱性でした。
XSS 攻撃は、Web アプリケーション内のセキュリティの不一致を利用して、サイト所有者や訪問者が気付かないうちに悪意のあるコード (ほとんどの場合、クライアント側の JavaScript コード) を挿入します。 適切な資格情報を持つ信頼できるサイトは、被害者のブラウザによってチェックされ、意図せずして、信頼できないソースからの悪意のあるスクリプトの配信メカニズムとして機能します。
これらのスクリプトは被害者のブラウザ上で実行され、Web アプリケーションとのやり取りを危険にさらします。 これは、Web サイトの改ざん、セッションの乗っ取り、マルウェアの挿入、フィッシングなど、さまざまな方法で発生する可能性があります。
XSS攻撃の仕組み
簡略化された 3 段階の XSS 攻撃プロセスは次のようになります。
- 攻撃者は脆弱な Web サイトを特定し、それを標的にして悪意のあるコードを挿入します。たとえば、サイトがすべての入力を検証しない場合などです。
- 悪意のあるコードが Web サイト上に侵入すると、攻撃者は何も知らない訪問者がそれを実行するのを受動的に待つか、侵害されたサイトのリンクを潜在的な被害者に積極的に送信します。これは、ソーシャル メディアのメッセージや電子メールを通じて実行され、ユーザーを騙してページを訪問させます。
- 最後に、サイト訪問者がコードを実行して被害者になると、攻撃者は目的に応じてさまざまな方法で将来のやり取りを操作できるようになります。
XSS 攻撃はブラウザのオリジン ポリシーを回避し、信頼できる Web サイト内に悪意のあるスクリプトを隠します。ブラウザは、Web サイトが安全であり、適切な資格情報を持っているかどうかを確認します。ただし、サイトに挿入された可能性のある追加のスクリプトを検証することはできません。したがって、 Web アプリケーションのセキュリティが不十分だと、ユーザーが悪意のあるスクリプトにさらされて重大な結果を招く可能性があります。
XSS攻撃の影響
攻撃の種類とハッカーの目的に応じて、XSS は Web アプリケーションとそのユーザーの両方にさまざまな影響を与える可能性があります。 Web サイトにアクセスする人、または Web アプリケーションを使用する人にとって、XSS 攻撃は次のような事態を引き起こす可能性があります。
- ウェブサイトの改ざん:ウェブサイトの画像を操作したり、HTML または CSS を変更して新しい要素を追加したりして、訪問者に表示されるものを変更します。攻撃者は、元の Web サイトとはまったく異なるものをユーザーに表示して、通常は行わないようなことを実行させる可能性があります。
- セッション ハイジャック:攻撃者は、被害者のブラウザ上で悪意のあるコードを実行して、Cookie にアクセスし、セッションをハイジャックする可能性があります。 これにより、ユーザーは Web アプリケーション上の自分のアカウントを制御し、不正なアクションを実行し、ブラウザーに保存されている機密情報にアクセスすることができます。
- マルウェアの注入:攻撃者の悪意のあるスクリプトは、訪問者のブラウザにマルウェアを注入します。その後、ブラウザは逃れて、システム上でネイティブに実行される可能性があります。 このマルウェアには、ログイン認証情報を取得するキーロガー、暗号通貨マイニング ソフトウェア、または別の DDoS 攻撃に使用するためのより広範なボットネットの一部としてシステムを制御することなど、さまざまな目的がある可能性があります。
- フィッシング:偽の入力フィールドを使用して訪問者をフィッシング サイトにリダイレクトし、ユーザーの資格情報を取得し、アカウントを制御します。
通常、訪問者は XSS 攻撃の主なターゲットですが、Web アプリケーションにも影響を与えます。 データ侵害はコンプライアンスの問題を引き起こし、罰金、法的措置、評判の失墜につながる可能性があります。ウェブサイトが改ざんされると、攻撃者が不快または悪意のあるコンテンツを表示し、評判を損なう可能性があります。
さらに、XSS 攻撃によって特権アクセスを持つ被害者が侵害された場合、ハッカーが Web アプリケーションの機能を制御したり、より重大なデータ侵害につながる可能性があります。
XSS攻撃の種類
反射型クロスサイトスクリプティング
反映 XSS とは、Web アプリケーションが悪意のあるコードをユーザーに「反映」することを指し、多くの場合、脆弱な入力フィールドを通じて行われます。 たとえば、Web サイトが URL パラメータによって提供された入力をサニタイズしない場合、攻撃者は悪意のあるスクリプトをリンクに埋め込むことで挿入できます。このリンクをクリックしたユーザーは、知らないうちにスクリプトを実行し、ブラウザを攻撃者に公開することになります。リフレクション XSS は、リンクがクリックされたときにのみ発生します。これは非永続的な形式のクロスサイトスクリプティングです。
保存型クロスサイトスクリプティング
ストアド XSS は、Web サイトの所有者が脅威を検出して対応するまで、新しいユーザーに感染し続けるクロスサイト スクリプティングの永続的な形式です。これらの攻撃では、信頼できないソースが、コメント セクションなどの永続的に保存される入力フィールドを使用して、Web サイト上のコードを隠します。サイトがコメントセクションからの入力を検証しない場合、攻撃者は新しい訪問者がページをロードしたときに実行される HTML タグを埋め込むことができます。
DOMベースのクロスサイトスクリプティング
DOM ベースの XSS は、訪問者のブラウザ上のドメイン オブジェクト モデル (DOM) を変更し、コードを挿入します。クライアント側にのみ影響し、サーバー上の応答は同じままです。例としては、URL から Web ページに非構造化データを書き込む Web サイトが挙げられます。
XSS脆弱性を特定し、攻撃を防ぐためのベストプラクティス
Web アプリケーションのセキュリティのベスト プラクティスに従うことで、Web サイト訪問者を保護し、評判を維持することができます。
Webアプリケーションの脆弱性を特定する
最初のステップは、Web アプリケーションに XSS 攻撃に対する弱点がないかどうかを確認することです。 これを手動で行うことも、専用のツールを使用して行うこともできます。
- 手動コードレビュー:コード分析を実施して、悪意のある人物がサイトに悪意のあるスクリプトを挿入する可能性がある弱点を特定します。さらに、テスト攻撃ペイロードを使用して、サイトにアクセスするブラウザで無害なスクリプトを実行できるかどうかを確認することもできます。
- 自動化された Web 脆弱性スキャナー: Web アプリケーションをスキャンし、XSS 脆弱性を識別するツールが利用可能です。 これらは通常、静的および動的 JavaScript 分析を使用します。
入力を検証する
Web アプリケーションには、すべてのユーザー入力をサニタイズするための堅牢な入力検証手順が必要です。 例:
- 検証 URL には安全なプロトコルがあります。
- ユーザーが指定した数値に整数のみが含まれていることを確認します。
- 入力に予期される文字セットが含まれていることを確認します。
無効な入力をブロックすることで、信頼できないソースが Web サイトにコードを挿入するのを防ぐことができます。
エンコード出力
次のステップは、Web サイトに書き込まれるすべてのユーザー制御データをエンコードすることです。必要なエンコーディングはコンテキストによって異なり、Javascript と HTML の両方のエンコーディング レイヤーなど、複数の組み合わせが必要になる場合があります。
コンテンツセキュリティポリシーの適用
これらの予防手法の両方が失敗した場合、コンテンツ セキュリティ ポリシー (CSP) は XSS 攻撃の影響を軽減するのに役立ちます。外部スクリプトの読み込みを制限し、同じオリジンからのみ読み込むように指定できます。CSP を適切に実施することで、攻撃者が悪意のあるコードを挿入できたとしても、XSS 攻撃の成功率を減らすことができます。
HTTP 専用 Cookie を設定する
HTTP のみの Cookie にフラグを設定すると、セッション Cookie はクライアント側のスクリプトによってのみキャプチャできるようになります。 これにより、JavaScript コードへのアクセスがブロックされ、XSS によるセッション ハイジャックの可能性が大幅に減少します。
Webアプリケーションファイアウォールを実装する
最後に、 Web アプリケーション ファイアウォール (WAF)を実装すると、トラフィックが監視およびフィルタリングされ、XSS 攻撃を対象としたセキュリティ ポリシーを開発および適用できるようになります。 これには、URL やその他の入力フィールドをスキャンして、ユーザーに反映される悪意のあるコードを識別してブロックすることが含まれます。現在、多くの WAF には AI と機械学習テクノロジーも組み込まれており、コンテキスト情報を分析し、未知の XSS 攻撃のバリエーションを使用してセキュリティ ポリシーを回避しようとする試みを検出します。
チェック・ポイントからCheck Point WAFでWebアプリケーションを保護
チェック・ポイントのCheck Point WAFは、既知および未知の脅威からアプリを保護するコンテクスチュアルAIを組み込んだ、予防第一の主要な Web アプリケーション ファイアウォールです。 Check Point WAFの詳細、および WAF as a Service (WAFaaS) を使用して数分で導入する方法について詳しくはこちらをご覧ください。
