FixVibe
Covered by FixVibehigh

クロスサイト スクリプティング (XSS) 脆弱性の検出と防止

クロスサイト スクリプティング (XSS) は、アプリケーションが適切な検証やエンコードを行わずに Web ページに信頼できないデータを含む場合に発生します。これにより、攻撃者は被害者のブラウザで悪意のあるスクリプトを実行することができ、セッションのハイジャック、不正なアクション、機密データの漏洩につながります。

CWE-79

影響

クロスサイト スクリプティング (XSS) の脆弱性の悪用に成功した攻撃者は、被害ユーザーになりすまして、そのユーザーに実行が許可されているあらゆる操作を実行し、ユーザーのデータ [S1] にアクセスすることができます。これには、セッション Cookie を盗んでアカウントをハイジャックすること、偽のフォームを介してログイン資格情報を取得すること、または仮想改ざん [S1][S2] を実行することが含まれます。被害者が管理者権限を持っている場合、攻撃者はアプリケーションとそのデータ [S1] を完全に制御できるようになります。

根本原因

XSS は、アプリケーションがユーザー制御可能な入力を受け取り、それを適切な無効化またはエンコードなしで Web ページに含めた場合に発生します。これにより、被害者のブラウザによって入力がアクティブ コンテンツ (JavaScript) として解釈され、Web サイトを相互に分離するように設計された同一生成元ポリシー ([S1][S2]) が回避されます。

脆弱性の種類

  • 反射された XSS: 悪意のあるスクリプトは、通常、URL パラメータ [S1] を介して、Web アプリケーションから被害者のブラウザに反映されます。
  • 保存された XSS: スクリプトはサーバー (データベースやコメント セクションなど) に永続的に保存され、後でユーザーに提供されます ([S1][S2])。
  • DOM ベースの XSS: この脆弱性は、innerHTML [S1] への書き込みなど、信頼できないソースからのデータを安全でない方法で処理するクライアント側のコードに完全に存在します。

具体的な修正

  • 出力時にデータをエンコードする: ユーザー制御可能なデータをレンダリングする前に安全な形式に変換します。 HTML 本文には HTML エンティティ エンコーディングを使用し、特定のコンテキスト [S1][S2] には適切な JavaScript または CSS エンコーディングを使用します。
  • 到着時に入力をフィルタリング: 予期される入力形式に対して厳密な許可リストを実装し、[S1][S2] に準拠しないものはすべて拒否します。
  • セキュリティ ヘッダーを使用する: セッション Cookie に HttpOnly フラグを設定して、JavaScript [S2] 経由のアクセスを防止します。 Content-Type および X-Content-Type-Options: nosniff を使用して、ブラウザーが応答を実行可能コード [S1] として誤って解釈しないようにします。
  • コンテンツ セキュリティ ポリシー (CSP): 強力な CSP を展開して、スクリプトのロードおよび実行が可能なソースを制限し、多層防御レイヤー [S1][S2] を提供します。

FixVibe がそれをテストする方法

FixVibe は、確立されたスキャン手法 [S1] に基づく多層アプローチを通じて XSS を検出できます。

  • パッシブ スキャン: XSS [S1] を軽減するように設計された、Content-Security-PolicyX-Content-Type-Options などの欠落している、または弱いセキュリティ ヘッダーを特定します。
  • アクティブ プローブ: 悪意のない一意の英数字文字列を URL パラメータおよびフォーム フィールドに挿入し、適切なエンコードを行わずに応答本文にそれらが反映されているかどうかを判断します ([S1])。
  • リポジトリ スキャン: DOM ベースの XSS [S1] の一般的な指標である innerHTMLdocument.write、または setTimeout など、信頼できないデータを安全に処理しない「シンク」のクライアント側 JavaScript を分析します。