XSS 脆弱性 101: Cross-Site スクリプトの特定と停止

アダプティブな多要素認証でデータ漏えい、弱いパスワード、フィッシング攻撃に対抗する方法を解説します。

更新済み: 2024年09月01日 読了目安時間: ~

 

この記事は機械翻訳されました。

 

クロスサイトスクリプティング(XSS)は、インジェクション攻撃の一種です。ハッカーは、正規のウェブサイトまたはアプリケーションの一部に悪意のあるコードを配置します。ターゲットがアクセスすると、コードが実行されます。

XSS攻撃の終わりに、ハッカーは不正アクセスを取得します。例えば、ハッカーがユーザーのセッションクッキーを取得する可能性があります。そのデータがあれば、ハッカーは被害者を装って、お金を盗むなど、望ましくない行為を行う可能性があります。ありがたいことに、サイトを保護する方法はあります。

Webデザイナーは、罠を作成しようとはしません。しかし残念ながら、XSS攻撃の脆弱性は広まっています。実際、一部の専門家は「多くの」サイトにそれらが含まれていると言っています。あなたのサイトに脆弱性がある場合、すべての訪問者を危険にさらすことになります。

クロスサイトスクリプティングとは何ですか?

XSS(クロスサイトスクリプティング)は、Webサイトに組み込まれたセキュリティの脆弱性です。ハッカーはXSSを使用して、訪問者が通常Webサイトやアプリで行うインタラクションを変更または乗っ取ります。

XSSは、Webの同一オリジンポリシーを悪用します。それには以下が含まれます。

  • 接続。デバイスがウェブサイトまたはアプリと連携します。
  • 許可。Webサイトとデバイスは、相互の合意に基づいて接続します。たとえば、デバイスはCookieを保存する場合があります。
  • スキップ。上記2つのステップが完了すると、デバイスは今後のリクエストでWebサイトを信頼します。これ以上の認可は必要ありません。

ハッカーがあなたのサイトやアプリのどこかに悪意のあるコードを埋め込みます。ユーザーのデバイスは、それが有効なソースからのものであるように見えるため、チェックすることなくコードを実行します。

このような問題は、非常に広範囲に及ぶ可能性があります。例えば、研究者たちは、約10万のウェブサイトにインストールされているWordPressツール内の脆弱性を発見しました。ハッカーは毎回コードを変更する必要はありません。訪問者が感染したサイトにアクセスするとすぐに、スクリプトが実行されます。

CSS攻撃はどのようにして始まるのですか?

デバイスとWebサイトは、必ずしも一方通行の通信を行うとは限りません。2つはデータを交換し、開発者がユーザーからの入力を分析またはブロックしない場合、XSSの問題が発生します。

Webサイトには、ページコード内にユーザー入力が含まれています。ハッカーは、脆弱なコードに悪意のある文字列を挿入します。次の訪問者が犠牲者になる可能性があります。

XSSは、クロスサイトリクエストフォージェリ(CSRF)とは異なります。ここでは、攻撃者は誰かを誘惑してリクエストを発行させることができます。しかし、ハッカーは常にレスポンスを見ることができるとは限りません。XSS攻撃では、ハッカーはコードを実行し、応答を確認し、データを使用してサイトから移動することさえできます。

XSS攻撃の2つのタイプ

すべてのXSS攻撃は悪意のあるコードから始まります。しかし、開発者なら誰でも知っているように、利用可能なコードタイプは数千種類もあります。

OWASPは2つの主要なタイプのXSS攻撃を認識しています。

  • Server: 悪意のあるコードは、サーバーが生成するHTTP応答に含まれています。
  • クライアント:悪意のあるコードはユーザーから送信され、DOMを更新します。

一部のXSS攻撃は一時的なもので、一度しか機能しません。永続的なものもあり、サーバー、ターゲットのデバイス、またはその両方に保存されたままになる可能性があります。

9個のクロスサイトスクリプティング攻撃ベクター

脆弱なコードは、XSS攻撃を構築する上で非常に重要です。ハッカーは通常、共通の脆弱性を探します。

タグは通常、攻撃を開始します。これら9つのタグタイプは脆弱であると見なされます。

タグは通常、攻撃を開始します。これら9つのタグタイプは脆弱であると見なされます。

  • Body
  • div
  • フレーム
  • img
  • 入力
  • リンク
  • object
  • スクリプト
  • table

これらのタグの1つまたは複数を使用せずにWebサイトを構築することはできません。それらは非常に一般的であり、ユーザーはそれらが提供する機能を求める傾向があります。それらを排除してサイトを保護することはできません。

クロスサイトスクリプティング攻撃のリスクを軽減する方法

フィルターされていないユーザー入力を出力に許可すると、常にXSS攻撃のリスクが高まります。Flash、VBScript、JavaScriptなどのツールを使用すると、リスクが高まります。

OWASPは、リスクを軽減する最良の方法は、コンテキストに応じたサーバー側の出力エンコードを使用することであると述べています。本質的に、訪問者があなたに与える入力に対して異なる応答を使用します。

その他のテクニックは次のとおりです。

  • コンテンツセキュリティ。Content Security Policy(CSP)ツールを使用してください。有効にすると、ブラウザはスクリプトを実行する前にチェックします。異常なものはすべて、実行される前に拒否されます。
  • エンコーディング:出力がエンコードされていることを確認して、アクティブなコンテンツのように見えないようにしてください。
  • フィルターどのような入力が典型的または予想されるか判断します。異常と思われるユーザー入力をすべて拒否します。
  • ヘッダー。HTMLを含めるべきではないHTTPレスポンス内のコードを防止します。
  • Java。サイトでJavaScriptを許可しないでください。

綿密な監視が不可欠です。コードがWebサイトから訪問者に送信される時期を把握し、異常な動作をするものをすべてシャットダウンしてください。

XSSやその他の攻撃についてさらに詳しく知りたい場合は、OktaのSecurity Technical Whitepaperを今すぐダウンロードしてください。

参考文献

クロスサイトスクリプティング:多くのWebサイトが一般的なWebエクスプロイトに対して脆弱なまま。(2015年11月)。ニュージャージー州。

XSS Bug in SEOPress WordPress Plugin Allows Site Takeover.(2021年8月)Threat Post.

XSSのタイプ。(OWASP)

クロスサイトスクリプティング(XSS)。(OWASP)

アイデンティティ施策を推進