WebSocket パッシブスキャンルール

スクリプト

このアドオンに既定で含まれているスクリプトは、以下のWebSocketパッシブスキャンルールを実装しています。

Base64の漏洩

このスクリプトは、着信WebSocketメッセージのペイロードを分析し、Base64 文字列を検出します。 エンコードされた情報には、エンドユーザーの利用を特に意図していない機密データが含まれている可能性があります。
Base64 文字列を識別するために使用される正規表現は、パディング文字に基づいています。 その結果、エンコードされた文字列の長さが N ビットで (N)mod6=0 の場合、偽陰性 (False Negative) が発生する可能性があります。 一方、入力テキストに = で終わる文字列が含まれている場合、偽陽性 (False Positive) が発生する可能性があります。

例:
オリジナルペイロード結果
Hello WorldSGVsbG8gV29ybGQ=真陽性 (True Positive)
Hello WorldTHIS_ISSGVsbG8gV29ybGQ=TEXT真陽性 (True Positive)
Hello World!SGVsbG8gV29ybGQK偽陰性 (False Negative)
122==122無効誤検知 (偽陽性)

デフォルト値:
リスク情報
信頼度
アラートID:110002

情報漏洩: アプリケーションエラー

このパッシブスキャナーは、受信WebSocketメッセージのペイロードに既知のアプリケーションエラーメッセージが含まれていないかチェックします。 このような詳細へのアクセスは、悪意のある個人にWebサイトをさらに悪用する手段を与える可能性があります。 また、エンドユーザーが直接利用することを意図していないデータが漏洩する可能性もあります。

例:
使用例結果
Warning: Cannot modify header information - headers already sent真陽性 (True Positive)
'this' is null or not an object真陽性 (True Positive)
System.Data.OleDb.OleDbException: Syntax error in string in query expression 'User ID = ? And Password = ?'真陽性 (True Positive)

デフォルト値:
リスク
信頼度
CWE ID209: エラーメッセージによる情報漏洩
WASC ID13: 情報漏洩
アラートID:110001

情報漏洩: クレジットカード番号

このスクリプトは、受信WebSocketメッセージのペイロードに個人識別情報 (PII) が含まれていないかスキャンします。 具体的には、ペイロードにクレジットカード番号がないかを受動的にスキャンします。 以下のクレジットカードタイプがスキャン対象です: {American Express, Diners Club, Discover, JCB, Maestro, Master Card, Visa}.

例:
使用例結果
5264 8109 66944441真陽性 (True Positive)
{"z":0.4333009597918351}誤検知 (偽陽性)

デフォルト値:
リスク
信頼度
CWE ID359: 個人情報の漏洩(「プライバシー違反」)
WASC ID13: 情報漏洩
アラートID:110005

情報漏洩: デバッグエラー

このスクリプトは、受信WebSocketメッセージのペイロードに既知のデバッグエラーメッセージの断片が含まれていないかチェックします。 このような詳細へのアクセスは、悪意のある個人にWebサイトをさらに悪用する手段を与える可能性があります。 また、エンドユーザーが直接利用することを意図していないデータが漏洩する可能性もあります。

例:
使用例結果
Error Occurred While Processing Request真陽性 (True Positive)
PHP Warning: Error While Sending QUERY Packet真陽性 (True Positive)

デフォルト値:
リスク情報
信頼度
CWE ID200: 情報漏洩
WASC ID13: 情報漏洩
アラートID:110003

情報漏洩: メールアドレス

このスクリプトは、受信WebSocketメッセージにメールアドレスが含まれていないかスキャンします。 メールアドレスは、エンドユーザーが直接利用することを意図していない可能性があります。

デフォルト値:
リスク情報
信頼度情報
CWE ID200: 情報漏洩
WASC ID13: 情報漏洩
アラートID:110004

情報漏洩: 疑わしいXMLコメント

このスクリプトは、XML形式の受信WebSocketメッセージペイロードに疑わしいコメントが含まれていないかチェックします。 検索対象となるのは、攻撃者が有用な情報を引き出すために利用できるコンポーネントに関連するコメントです。 FIXME、BUGなどのコメントは、Webアプリケーションの弱点を標的としたさらなる攻撃に役立つ可能性があります。

例:
使用例結果
<xml_test><!-- This is a comments section --></xml_test>
真陰性 (True Negative)
<user_form><!-- FIXME: Encode --></user_form>
真陽性 (True Positive)

デフォルト値:
リスク情報
信頼度
CWE ID200: 情報漏洩
WASC ID13: 情報漏洩
アラートID:110008

プライベートアドレスの漏洩

受信WebSocketメッセージのペイロードに、RFC 1918 IPv4アドレスや Amazon EC2プライベートホスト名(例: ip-10-0-56-78)が含まれていないかチェックします。 この情報により、攻撃者は内部ネットワークのIPアドレススキームに関する有用な情報を得ることができ、内部システムを標的としたさらなる攻撃に役立つ可能性があります。
このパッシブスキャナーは、vp09.02.51.10.01.09.16 のようなドット区切りの長い数値文字列の場合に誤検知 (偽陽性) が発生する可能性があります。この例では、後方の4オクテットが RFC 1918 IPv4アドレスのように見えるためです。 アナリストはレビュー後、ZAPでそのようなアラートを誤検知としてマークすることができます。

例:
使用例結果
10.255.255.255真陽性 (True Positive)
ip-10.0.0.0真陽性 (True Positive)

デフォルト値:
リスク
信頼度
アラートID:110006

ユーザー名の露見

受信WebSocketメッセージのペイロードにユーザー名が含まれていないかチェックします。 このスクリプトは、以下のメソッドでハッシュ化されたユーザー名を検出できます: {MD2, MD5, SHA256, SHA384, SHA512}。 ユーザー名は、事前にいずれかのコンテキストで定義されている必要があります。 コンテキストにユーザーを追加するには、以下の手順に従います:
  1. ハンドシェイクリクエストを Context に含める
  2. Session Context でターゲットユーザーを設定する

デフォルト値:
リスク情報
信頼度
CWE ID284: 不適切なアクセス制御
WASC ID2: 不十分な認可
アラートID:110007