Bot対策は攻守のいたちごっこです:攻撃者は適応し、防御側は応答し、そのサイクルは続きます。Cloudflareでは、グローバルネットワークの可視性とクライアント側環境からのシグナルを組み合わせることで先手を取っています。ネットワークレベルでは、1日あたり1兆件を超えるリクエストを解析し、サイト全体の20%以上にわたる評判、パターン、異常を理解しています。クライアント側では、Cloudflare Turnstile を通じて検出をより深く進めてきました。TurnstileはCAPTCHAの代替から、ユーザーが本物であることを検証するために必要な摩擦量を動的に調整するリスクベースのマネージドチャレンジへと進化しました。現在、Turnstileは1日あたりほぼ30億回稼働し、ログイン、サインアップ、チェックアウトなどの重要な局面でユーザー検証を支えています。これにより顧客アプリケーションの最も重要な領域の保護は向上しますが、アプリケーション全体—ユーザーのフルジャーニーにおける人間とボットの実際の相互作用—については可視性が限られたままです。今回、私たちはその可視性ギャップを埋めるためにPrecursorを公開します。
Introducing Precursor
Precursorは、プライバシーを念頭に設計されたクライアント側セッションベースの検証システムで、動的に注入されるJavaScriptを使って訪問者がアプリケーションとやり取りする間に継続的に行動シグナルを収集します。これらのシグナルはリアルタイムで処理され、Cloudflareのボット保護に組み込まれるため、ヒューマントラフィックと自動化/エージェント的トラフィックを継続的に区別できます。これにより、Challengeが提供するクライアント側検出がアプリケーション全体に拡張されます。
PrecursorはTurnstileへのオプションの補完機能で、両方ともEnterprise Bot Managementの機能です。このユーザージャーニーに基づく検出は強力です。というのも、現代の自動化は短時間では正当に見えることが増えているからです。ボットはJavaScriptを実行し、実際のブラウザ環境を使い、個々のCAPTCHAを通過することもできますが、時間を通じて一貫した人間の振る舞いを再現することは依然として困難です。Precursorはそのインタラクションの層を捉えるように構築され、行動自体を不正検出のための信頼できるシグナルに変えます。
セッション全体の行動を評価することで、Precursorは各判定に対して著しく多くのシグナルを付加します。これにより検出の精度が向上し、過度に侵襲的なChallengesに頼らずに実際のユーザーと自動化を区別しやすくなります。正当なユーザーにとっては不要な中断が減ります。ボット開発者にとっては、フルセッションをシミュレートする必要が生じ、運用コストが上がり、構築・維持が難しく、スケールさせて安定的に運用するのが格段に困難になります。
To err is human(人は間違える)
ボット開発者がマウス移動を人間らしく見せようとすると、しばしばガウスノイズや一様ランダムな遅延を加えます。しかし、人間の動きは単に「ノイズがある」だけではなく、物理的制約にも縛られています。
- 手首の回転:人間のマウス移動はしばしば弧を描き、手首の可動域や前腕の回転によって制限されます。
- 認知負荷:チェックボックスを見てからクリックするまでに測定可能な遅延があります。
- 手の振戦:最も安定した手でも生理学的な振戦周波数で微小な振動があります。
対照的にボットは自己を露呈するような挙動を取りがちです。直線的な補間や数学的に理想的なベジェ曲線で動く、あるいは人間には再現不可能な精度でクリックする、といった具合です。人間の誤りをシミュレートできたとしても、人間の動きにはセッション全体を観察することでしか見えてこないリズムがあります。
マウス移動はPrecursorが評価するシグナルの一例に過ぎませんが、差は明瞭です。ボットによる自動化の例では、マウスが完璧な直線で移動し、常に原点に戻り、同じ速度で反応する様子が見られます。一方で人間は不規則な経路、小さな補正やオーバーシュート、速度・タイミング・方向の変動を示します。個々のインタラクションはもっともらしく見えるかもしれませんが、セッションを通して比較すると、これらのパターンは偽装が難しい形で乖離します。Precursorは訪問者がアプリケーションとやり取りする過程で発生するこうした行動署名を捉え、評価するよう設計されています。
How Precursor works(動作の仕組み)
Precursorは時間をかけた行動評価を行うために、クライアント上で継続的にインタラクションデータを収集し、そのサイトにおけるセッションレベルの活動ビューを構築します。
- 注入と収集レイヤー
- Precursorをアプリケーションで有効にすると、Cloudflareはネットワークを通過するHTMLレスポンスに軽量スクリプトを自動的に注入します。追加の設定、外部ネットワーク接続、サードパーティの埋め込みは不要です。
- 注入されるPrecursorバンドルは小型で難読化され、各レスポンスごとに動的に組み立てられます。ホストされているウェブアプリケーションの追加のページロジックを妨げないよう設計されています。
- スクリプトはポインター移動、キーボード活動、フォーカスの変化、可視性などのインタラクションシグナルを取得するために軽量のイベントリスナをアタッチします。これらのイベントはコンパクトな形式で直列化され、メモリ内にバッファされます。定期的にバッファされたデータが評価レイヤーへ送信されます。
- 評価レイヤー
- エッジサーバー上で受信したPrecursorペイロードは行動入力にデシリアライズされます。ディスパッチャが入力データに対して複数のイベリュエータ(評価器)を走らせます。
- 各イベリュエータは関心のあるPrecursorストリームを読み取り、共有の検出レジストリにシグナルを上げることができます。イベリュエータはデータの相互参照を行うよう設計されています。例えば、ポインター活動がページの可視時間と相関しているか、キーボードイベントがテキストフィールドにフォーカスがあるときにのみ発生しているかを確認します。
- この情報のストリームは個別のシグナルに統合され、検出の重み付けに使われます。
- セッション統合
- Precursorのデータはセッション単位でスコープされ、セッションを通して蓄積されます。セッションスコープは重要です。なぜなら、ボットがページをリフレッシュしたり新しいチャレンジでやり直すことで行動署名をリセットできなくするためです。
- システムはセッションメタデータを下流の検出レイヤーに送り、シャドウモードのヒューリスティクスやセッション分析、予測完了と実際の完了の比較、セッション遅滞(delinquency)ヒューリスティクスなどに利用します。
- これらのエッジ側観察は検出改善の目的でログに記録され、セッションのボットスコア調整に使われます。
- Privacy by design(プライバシー設計)
- Precursorは人間のパターンと自動化・悪用パターンを区別するために役立つシグナルのみを収集するよう設計されています。イベントリスナは自動化検出と悪用検知に有用な最小限の情報だけを取得します。例えば、キーボード活動は実際に押されたキーの内容ではなく、タイミングとリズムとしてキャプチャされます。
- 加えて、行動シグナルは個々のアクションではなく集計パターンとして評価され、Cloudflareのボット検出システム内部で消費されます。これらのデータは顧客ダッシュボードに公開されたり、ユーザーアカウントやログイン識別子、永続的プロファイルに紐づけられたりしません。
- これらを組み合わせることで、Precursorは良質なユーザーに対する摩擦を最小化しつつ行動の継続的な評価を維持し、検出精度を最大化します。
セッション単位の分析
この新たな検出レイヤーを支えるために、Security Analyticsにセッションベースのビューを導入しています。これらのダッシュボードは個々のリクエストからフルの訪問者ジャーニーへと視点をシフトします。たとえば以下のような問いに答えられます:
- 私のサイトで典型的なセッションはどのようなものか?
- セッションはどこで期待される行動から逸脱しているか?
- どのセッションが時間を通じて自動化の兆候を示しているか?
Security Analyticsを使ってBot Managementトラフィックのセッションベースビューを探索してください。これらのアナリティクスはリクエスト単位の解析では得られない情報、特にリクエスト間に発生する行動を取り込みます。Precursorはbot score、チャレンジ判定、セキュリティルールといった既存システムに直接フィードするため、この追加コンテキストの恩恵を即座に受けられます。
今後の展望
Precursorはアプリケーション全体にわたるボット検出を拡張するための基盤です。私たちは引き続き、セキュリティ向けの行動シグナルの範囲と深さ、セッションレベルのインサイトがBot Management保護に与える影響、セッションデータを可視化・活用する新しい方法を拡張していきます。ボットが進化するにつれて、検出は孤立したチェックポイントを越えてユーザー活動のフルフローに移行する必要があります。
始め方
Precursorは現在ロールアウト中で、Cloudflareダッシュボードから直接有効化できます。Precursorは今年後半のGAリリースまで無料で使用可能です。
開始は簡単です:ゾーンでPrecursorをオンにし、セッションをどれくらい厳密に検証するかを選んでください。バックグラウンドで行動を観察する低摩擦モードで実行することも、セッションが既に存在しない場合にChallengeを適用して完全に検証されたセッションを要求することもできます。
一度有効にすると、Precursorはアプリケーションに変更を加えることなく既存のボット防御を即座に強化します。すでにBot ManagementやTurnstileを利用している場合、Precursorはそれらの保護をChallengeの外側、セッションの残りの部分へと拡張します。
Precursorを有効にして、既に保護している瞬間と瞬間の間のアクティビティを含むフルユーザーセッション全体に検出を拡張してください。
タグ: Bot Management, Security, Turnstile, JavaScript, AI, Precursor, Product News