Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

漏洩認証情報の検出

最終更新 Markdown で表示Agent セットアップ

漏洩認証情報のトラフィック検出は、受信リクエストをスキャンし、データ漏洩で以前に漏洩した認証情報(ユーザー名とパスワード)を探します。

仕組み

漏洩認証情報の検出をオンにすると、Cloudflare は受信 HTTP リクエストをスキャンしてユーザー名とパスワードを探します。スキャンは、一般的な Web アプリケーション の認証パターンと、設定したカスタム検出場所 を確認します。

検出された認証情報は、既知の漏洩認証情報のデータベースと照合されます。このデータベースは次で構成されます。

  • Have I Been Pwned (HIBP) の一致パスワードデータセット(パスワードのみ)
  • Cloudflare が収集した認証情報(ユーザー名)
  • 漏洩した認証情報のペア(ユーザー名とパスワード)

結果に基づき、Cloudflare はスキャンしたリクエストの漏洩認証情報フィールド を設定します。これらのフィールドは、次の 2 つの方法で使えます。

  • トラフィックを分析する: Security Analytics ダッシュボードで検出結果を確認し、漏洩認証情報がトラフィックにどの程度現れるかを把握します。
  • ルールを作成する: カスタムルール またはレート制限ルール でこれらのフィールドを使い、侵害された認証情報を含むリクエストにチャレンジまたはブロックします。

漏洩認証情報がトラフィックに現れる理由はさまざまです。攻撃者がクレデンシャルスタッフィング 攻撃を行っている場合もあれば、正当なユーザーが以前漏洩したパスワードを再利用している場合もあります。

オリジンサーバーに通知する

漏洩認証情報の検出は、一致したリクエストに Exposed-Credential-Check リクエストヘッダーを追加するマネージド変換 を提供します。ヘッダー値は何が漏洩したかを示します。たとえば、ユーザー名とパスワードの両方が漏洩ペアなら 1、ユーザー名が漏洩していれば 2、パスワードのみが漏洩していれば 4 です。

オリジンサーバーでこのヘッダーを使い、ユーザーに警告し、パスワードのリセットを促せます。

提供状況

プランごとの利用可能な機能については、トラフィック検出ページの提供状況 を参照してください。

デフォルトのスキャン場所

漏洩認証情報の検出には、次のよく知られた Web アプリケーションの HTTP リクエストから認証情報を特定するルールが含まれます。

  • Drupal
  • Joomla
  • Ghost
  • Magento
  • Plone
  • WordPress
  • Microsoft Exchange OWA

さらに、その他の一般的な Web 認証パターン向けの汎用ルールもスキャンに含まれます。

Web アプリケーションで使っている認証の仕組みに合わせて、カスタム検出場所 を設定することもできます。カスタム検出場所は、Web アプリケーションの HTTP リクエスト内のどこにユーザー名とパスワードがあるかを Cloudflare WAF に伝えます。

カスタム検出場所

デフォルトのスキャンは一般的な Web アプリケーション を対象にしますが、アプリケーションは別の形式やフィールド名で認証情報を送る場合があります。カスタム検出場所を使うと、HTTP リクエスト内のユーザー名とパスワードの場所を Cloudflare に正確に伝えられます。

たとえば、ユーザーを認証する HTTP リクエストの JSON 本文が次のような場合です。

{ "user": "<username>", "secret": "<password>" }

次の設定でカスタム検出場所を構成できます。

  • ユーザー名の場所:
    lookup_json_string(http.request.body.raw, "user")
  • パスワードの場所:
    lookup_json_string(http.request.body.raw, "secret")

カスタム検出場所を指定するとき、必須なのはユーザー名フィールドの場所だけです。

次の表は、リクエスト種別ごとの検出場所の例です。

リクエスト種別 ユーザー名の場所 / パスワードの場所
JSON 本文 lookup_json_string(http.request.body.raw, "user")
lookup_json_string(http.request.body.raw, "secret")
URL エンコードフォーム url_decode(http.request.body.form["user"][0])
url_decode(http.request.body.form["secret"][0])
マルチパートフォーム url_decode(http.request.body.multipart["user"][0])
url_decode(http.request.body.multipart["secret"][0])

カスタム検出場所の指定に使う式には、次のフィールドと関数を含められます。

カスタム検出場所の設定手順は、利用を開始する を参照してください。

漏洩認証情報フィールド

次のフィールドは、Cloudflare が検出した漏洩認証情報の一致種別を示します。侵害された認証情報を含むリクエストに対処するには、カスタムルール またはレート制限ルール でこれらのフィールドを使います。

フィールド 説明
Password Leaked
cf.waf.credential_check.password_leaked
Boolean
リクエストで検出したパスワードが以前に漏洩していたかどうかを示します。
すべてのプランで利用できます。
User and Password Leaked
cf.waf.credential_check.username_and_password_leaked
Boolean
リクエストで検出したユーザー名とパスワードのペアが以前に漏洩していたかどうかを示します。
Pro プラン以上が必要です。
Username Leaked
cf.waf.credential_check.username_leaked
Boolean
リクエストで検出したユーザー名が以前に漏洩していたかどうかを示します。
Enterprise プランが必要です。
Similar Password Leaked
cf.waf.credential_check.username_password_similar
Boolean
リクエストで検出したユーザー名とパスワードに類似した認証情報が以前に漏洩していたかどうかを示します。
Enterprise プランが必要です。
Authentication detected
cf.waf.auth_detected
Boolean
Cloudflare がリクエスト内で認証情報を検出したかどうかを示します。
Enterprise プランが必要です。

役に立ちましたか?