エッジでクレデンシャルスタッフィングを防ぐ
tracio.aiが認証システムに到達する前に自動ログイン試行をどのように識別するか——デバイスフィンガープリント、速度チェック、行動シグナルを組み合わせて解説します。
クレデンシャルスタッフィング
攻撃は、自動化ツールを使って、盗まれたユーザー名とパスワードの組み合わせをログインページに対して試します。この攻撃は大規模で、単一の攻撃者が数百のターゲットサイトにわたって1日に数百万件のクレデンシャルを試すこともあります。レート制限やCAPTCHAといった従来型の防御は不十分です。攻撃者はリクエストを数千のIPアドレスに分散させ、CAPTCHA解決サービスを利用するためです。以下では、リクエストが認証システムに到達する前に、エッジでクレデンシャルスタッフィングを防ぐ方法を説明します。
攻撃対象領域
典型的なクレデンシャルスタッフィングの運用では、盗まれたクレデンシャルのリスト(ダークウェブのマーケットプレイスで100万件あたりわずか10ドルで入手可能)、自動化ツール(通常はカスタムスクリプトやOpenBulletのようなツール)、そしてプロキシIPのプール(IPベースのレート制限を回避するためにリクエストごとにローテーションするレジデンシャルプロキシ)が使われます。
攻撃者はツールを設定し、制御された速度でログインリクエストを送信します——単純なレート制限を発動させない程度に遅く、しかし1時間に数千件のクレデンシャルを試せる程度に速く設定します。各リクエストは異なるIPアドレスから、異なるuser agent文字列で送られるため、異なるユーザーからの正当なログイン試行の流れのように見えます。
なぜレート制限は機能しないのか
IPベースのレート制限は、ほとんどのチームが最初に導入する防御ラインですが、最初に破られるものでもあります。レジデンシャルプロキシサービスは、数百万件の実在するIPアドレス——家庭用ルーター、モバイルデバイス、IoTデバイス——へのアクセスを提供し、それらはリクエストごとにローテーションします。サーバーの視点からは、各ログイン試行は、不正利用の履歴を持たない一意のレジデンシャルIPから来ているように見えます。
アカウントベースのレート制限(ユーザー名ごとにログイン試行を制限する)はより効果的ですが、サービス拒否の攻撃経路を生み出します。攻撃者は、対象のユーザー名に対して意図的に複数回ログインを失敗させることで、正当なユーザーをロックアウトできてしまうのです。
基盤としてのデバイスフィンガープリンティング
デバイスフィンガープリンティングは、攻撃者が使うIPではなく、攻撃を実行しているデバイスを識別するため、状況を変えます。単一のマシンまたは仮想マシンのファームで動作するクレデンシャルスタッフィングツールは、どのプロキシIPをローテーションしても、すべてのリクエストにわたって一貫したデバイスフィンガープリントを生成します。
当社のBot Detectionエンジンは、自動化ツールそのものを識別します。Seleniumはnavigator.webdriverのアーティファクトを残します。PuppeteerとPlaywrightには特徴的なJavaScriptランタイムの特性があります。Headless Chromeには、GUI版のChromeが備える特定のブラウザAPIが欠けています。JavaScriptを実行しないカスタムHTTPクライアントでさえ、TLSフィンガープリンティングで検知されます——そのClient Helloメッセージが、背後にあるHTTPライブラリを明らかにするためです。
デバイス単位の速度追跡
安定したデバイス識別子(Device Identification経由)を得ると、IPレベルではなくデバイスレベルで速度チェックを適用できます。単一のデバイスが5分間に50回のログインを試みた場合——それらのリクエストがいくつの異なるIPから来たかにかかわらず——そのパターンは紛れもなくクレデンシャルスタッフィングです。
当社のIP Intelligenceモジュールは、5分・1時間・24時間という3つの時間ウィンドウにわたって速度を追跡します。このマルチウィンドウのアプローチは、攻撃的な攻撃(1分あたり数百回の試行)と、スロー&ロー型攻撃(数日にわたって持続する1時間あたり数回の試行)の両方を捕捉します。
行動シグナル分析
ボット検知と速度追跡に加えて、当社のSmart Signals分析は、自動化された攻撃を正当なログインと区別する行動シグナルを検査します。実在のユーザーは、リクエストのタイミング、タイピング速度、ナビゲーションパターンに自然なばらつきを示します。自動化ツールは、機械的に一貫したタイミング、同一のリクエストヘッダー、マウスの動きやスクロールイベントの欠如を生み出す傾向があります。
また、環境のなりすましを示すシグナルの不整合もチェックします。macOS上のChromeを名乗りながら、Linux仮想マシンに関連するWebGLパラメータを提示するブラウザは、即座にフラグが立てられます。TLSフィンガープリントと一致しないuser agent文字列は、改ざんアラートを発動させます。
エッジでのデプロイ
クレデンシャルスタッフィングを止める鍵は、それが認証システムに到達する前に止めることです。当社のエージェントはログインページで読み込まれ、ユーザー(またはボット)がクレデンシャルを送信する前に、ページ読み込み中にシグナルを収集します。フィンガープリントとボット検知の結果は、ログインフォームが送信される時点までに利用可能となり、サーバーが自動化された試行を即座に拒否できるようにします。
大量のリクエストを受けるターゲットには、CDNエッジでフィンガープリント検証を実行する、当社のCloudflare WorkerまたはCloudFront Lambda@Edge連携のデプロイを推奨します。これにより、クレデンシャルスタッフィングのリクエストは攻撃者に最も近いエッジノードでブロックされ、オリジンサーバーに到達することはありません。
成果
当社の顧客は、ログインページにtracio.aiをデプロイした後、クレデンシャルスタッフィングの量が99%減少したと報告しています。残る1%は、慎重になりすまされたシグナルを用いた完全なブラウザ自動化による、きわめて高度な攻撃で構成されます——これらは、速度パターンが浮かび上がる最初の数十リクエスト以内に、当社のマルチメソッド検知によって捕捉されます。