露出した認証情報のチェック
多くのウェブアプリケーションは、最近の過去においてクレデンシャルスタッフィング攻撃を受けています。これらの攻撃では、露出した認証情報のデータベースからのユーザー名/パスワードのペアを使用して、大量のログイン試行が行われます。
Cloudflareは、Cloudflare Web Application Firewall (WAF)を使用して、露出した認証情報の自動チェックを提供します。
WAFは、このチェックのために2つのメカニズムを提供します:
-
露出した認証情報チェック管理ルールセットは、人気のあるCMSアプリケーションのための事前定義されたルールを含んでいます。このルールセットを特定のゾーンに対して有効にすることで、これらのよく知られたアプリケーションに対する露出した認証情報のチェックを即座に有効にします。
-
あなたの基準に従って露出した認証情報をチェックするカスタムルールを作成する能力があります。
Cloudflareは、露出した認証情報チェック機能をサポートする露出した認証情報のデータベースを定期的に更新します。
平文のユーザー名とパスワードの認証情報は、Cloudflareネットワークを離れることはありません。WAFは、以前に露出した認証情報があるかどうかを判断する際に、ユーザー名とパスワードの匿名化されたバージョンのみを使用します。Cloudflareは、次のブログ記事で説明されているk-匿名性の数学的特性に基づくアプローチを採用しています:k-匿名性を用いた漏洩パスワードの検証 ↗。
WAFは、露出した認証情報を検出した際に次のいずれかのアクションを実行できます:
- Exposed-Credential-Check Header: 露出した認証情報を含むHTTPリクエストに新しいHTTPヘッダーを追加します。オリジンのアプリケーションは、その後、パスワードのリセットを強制したり、二要素認証プロセスを開始したり、その他のアクションを実行したりできます。追加されたHTTPヘッダーの名前は
Exposed-Credential-Checkで、その値は1です。 - Managed Challenge: インターネット全体でCAPTCHAを解決するために費やされる人間の時間の寿命を短縮するのに役立ちます。リクエストの特性に応じて、Cloudflareは特定の基準に基づいて適切なタイプのチャレンジを動的に選択します。
- Block: 露出した認証情報を含むHTTPリクエストをブロックします。
- JS Challenge: 露出した認証情報を持つHTTPリクエストを行うクライアントに対して非対話型のチャレンジを提示します。
- Log: エンタープライズプランでのみ利用可能です。Cloudflareのログに露出した認証情報を含むリクエストを記録します。より厳しいアクションを実行する前にルールを検証するために推奨されます。
- Interactive Challenge: 露出した認証情報を持つHTTPリクエストを行うクライアントに対して対話型のチャレンジを提示します。
露出した認証情報チェック管理ルールセットのルールのデフォルトアクションはExposed-Credential-Check Header(APIではrewriteと呼ばれます)です。
Cloudflareは、次のアクションのみを使用することを推奨します:Exposed-Credential-Check Header(APIではrewriteと呼ばれます)およびLog(log)。
露出した認証情報チェック管理ルールセットを有効にすることに加えて、カスタムルールで露出した認証情報をチェックすることもできます。一般的なユースケースは、アプリケーションのエンドユーザー認証エンドポイントにカスタムルールを作成して露出した認証情報をチェックすることです。露出した認証情報をチェックするルールは、レート制限ルールの前に実行されます。
カスタムルールで露出した認証情報をチェックするには、アカウントレベルのルール定義に露出した認証情報チェックを含め、HTTPリクエストからユーザー名とパスワードの値を取得する方法を指定します。詳細については、露出した認証情報をチェックするカスタムルールの作成を参照してください。