Precursor: セッション全体でエージェントの挙動を検知するCloudflareのシステム
(blog.cloudflare.com)- ログイン・登録・決済のような個別の検証ポイントだけでは、実際のブラウザとJavaScriptを利用する自動化を見分けることが難しくなったため、Cloudflareはユーザーの移動全体にわたる行動シグナルを連続的に分析するPrecursorを導入した
- HTMLレスポンスに動的に組み立てられた軽量JavaScriptを挿入し、ポインター移動、キーボード操作、フォーカス、ページ表示状態を収集して、エッジでの評価と既存のボット防御基盤にリアルタイムで反映する
- 手首の動きや認知的な遅延、手ぶれ、速度・方向・補正のリズムは、直線移動や一定速度、過度な精密さを示す自動化がセッション全体にわたって再現しにくく、セッション単位の判定の根拠になる
- 実際のキー入力ではなくタイミングとリズムだけを収集し、行動シグナルをユーザーアカウントや永続プロファイルに関連付けたり、顧客ダッシュボードに直接表示したりしないプライバシー保護設計を採用している
- 現在Enterprise Bot Management機能として展開中で、今年末のGAまで無料で利用でき、アプリケーションの変更なしにバックグラウンド観測、または未検証セッションへのChallenge強制という形で運用できる
個別の検証ポイントからセッション全体へ
- ボット防御は攻撃者の適応と防御側の対応が繰り返される敵対的競争であり、Cloudflareはネットワーク全体の可視性とクライアント環境のシグナルを組み合わせて活用している
- 世界中のネットワークで1日1兆件超のリクエストを分析し、Webの20%超に相当する範囲でレピュテーション、パターン、異常兆候を把握している
- Cloudflare Turnstileは、CAPTCHAの代替から、ユーザー確認に必要な摩擦の度合いを調整するリスクベースのマネージドChallengeへと進化した
- Turnstileはログイン、登録、決済のようなセンシティブなポイントで1日約30億回実行されているが、その間を含むユーザーの移動全体の中で人間とボットがどう振る舞うかは限定的にしか把握できていなかった
- Precursorは、この可視性の空白を埋めるために、Webアプリケーション全体でクライアントの行動シグナルを継続的に収集し、セッション単位で判定する
- Challengeが提供していたクライアント側検知をアプリケーション全体へ拡張する
- Turnstileを選択的に補完し、両機能ともEnterprise Bot Managementに含まれる
短い瞬間より模倣しにくい行動の連続性
- 現代の自動化はJavaScriptを実行し、実際のブラウザ環境を使い、個別のCAPTCHAさえ通過できるため、短い区間では正常なユーザーのように見えることがある
- しかし、セッション全体で一貫した人間の行動を再現するのはより難しく、Precursorはこの行動の連続性を不正や悪用の検知シグナルとして活用する
- 各判定により多くのシグナルを追加し、人間と自動化を見分ける精度を高める
- 攻撃的なChallenge依存を減らし、正常ユーザーの不要な中断を減らす
- ボット開発者はセッション全体を模倣する必要があるため、自動化の構築・維持コストが上がり、大規模運用の信頼性は下がる
人間の誤差と物理的制約
- ボット開発者はマウスの動きにガウシアンノイズや一様なランダム遅延を加えるが、人間の動きには単なるノイズ以上の物理的・認知的制約がある
- 手首の回転軸: 手首の可動域と前腕の回転により、マウスはしばしば弧を描くように動く
- 認知負荷: チェックボックスを見てからクリックするまでに測定可能な遅延が生じる
- 手ぶれ: 安定した手でも、生理的な手ぶれ周波数に応じた振動が現れる
- 自動化は直線補間や数学的に理想化されたベジェ曲線を使い、人間には再現しにくい精度でクリックする傾向がある
- 例として挙げられる自動化ライブラリは、マウスを完全な直線で動かし、常に原点へ戻り、同じ速度で反応する
- 一方で人間は、同じサイトでも不規則な経路、小さな補正や目標地点の行き過ぎ、速度・タイミング・方向の変化を示す
- 個々の相互作用はもっともらしく見えても、セッション全体では行動パターンの差が現れ、Precursorは相互作用が続くあいだこうした行動シグネチャを捉えて評価する
クライアント注入とシグナル収集
- Precursorを有効化すると、Cloudflareネットワークを通過するサイトのHTMLレスポンスに軽量スクリプトが自動的に挿入される
- 追加設定や別個のネットワーク接続、サードパーティ埋め込みは不要
- バンドルは小さく難読化されており、レスポンスごとに動的に組み立てられる
- ホストされているWebアプリケーションの他のページロジックを妨げないよう設計されている
- スクリプトは軽量なイベントリスナーで、ポインター移動、キーボード操作、フォーカス変化、ページ表示状態を捉える
- イベントは圧縮形式でシリアライズされ、メモリ内にバッファリングされる
- バッファに蓄積されたデータは定期的に評価レイヤーへ送信される
エッジ評価とクロスバリデーション
- エッジサーバーは受信したPrecursorペイロードを行動入力としてデシリアライズし、ディスパッチャを通じて複数の評価器(evaluator) を実行する
- 各評価器は必要なPrecursorストリームを読み取り、共有検知レジストリにシグナルを登録できる
- 単一イベントに依存せず、異なるデータを相互検証する
- ポインター操作がページ表示時間と一致しているかを確認する
- テキストフィールドにフォーカスがあるときだけキーボードイベントが発生しているかを確認する
- 連続して入ってくる情報は個別の検知シグナルに統合され、検知重みの計算に活用される
セッション蓄積と後続の検知レイヤー
- Precursorデータはセッション範囲で蓄積されるため、ボットがページを再読み込みしたり新しいChallengeから再開したりしても、行動シグネチャを初期化できない
- セッションメタデータは後続の検知レイヤーにも渡される
- シャドーモードのヒューリスティックとセッション分析
- 予想される完了と実際の完了の比較
- セッション delinquency ヒューリスティック
- エッジで観測した情報は検知改善のために記録され、セッションのボットスコアを調整するために使われる
プライバシー保護設計
- イベントリスナーは、人間のパターンと自動化・悪用パターンを区別するために必要な最小限の情報だけを収集する
- キーボード操作では実際に押されたキーではなく、タイミングとリズムだけを捉える
- 個々の行動ではなく、集計された行動パターンを評価する
- 行動シグナルはCloudflareのボット検知システム内部でのみ使用される
- 顧客ダッシュボードに直接表示されない
- ユーザーアカウント、ログインID、永続プロファイルとは関連付けられない
- これにより、正常ユーザーへの摩擦を減らしながら行動評価を継続的に更新する
セッションベースのSecurity Analytics
- Security Analyticsには、個別リクエストではなく訪問者の移動全体を示すセッションベース表示が追加される
- ダッシュボードでは次の問いを調査できる
- サイトの一般的なセッションはどのようなものか
- 期待される行動から外れる地点はどこか
- 時間の経過とともに自動化の兆候を示すセッションはどれか
- リクエスト単位の分析では捉えにくかったリクエスト間の行動も分析対象になる
- Precursorデータは既存のボットスコア、Challenge判定、セキュリティルールに直接渡されるため、追加されたセッション文脈を既存の防御基盤ですぐに活用できる
今後の拡張と有効化方法
- Precursorはボット検知をアプリケーション全体へ拡張するための基盤であり、Cloudflareは今後も次の領域を拡大していく予定だ
- セキュリティに活用する行動シグナルの範囲と深さ
- セッションレベル情報がボット管理保護に与える影響の仕方
- セッションデータを可視化し、対処するための新しい方法
- ボットが進化するほど、検知も孤立した検証ポイントから離れ、ユーザー行動全体の流れを扱う必要がある
- 現在、CloudflareダッシュボードでゾーンごとにPrecursorを有効化でき、今年末のGAリリース前までは無料で提供される
- セッション検証の強度は次の2つの方法から選べる
- 摩擦の少ないモードではバックグラウンドで行動を観測する
- 完全に検証されたセッションが必要な場合は、既存セッションがないときにChallengeを強制する
- 有効化するとすぐに既存のボット防御が強化され、アプリケーションの変更は不要
- すでにBot ManagementやTurnstileを利用している場合、既存のChallengeポイントを超えて、残りのセッションと保護ポイントの間の活動まで検知範囲が広がる
1件のコメント
Hacker News の意見
Cloudflare がブロックと許可の両面でボットの判定者になっていく姿は懸念されるし、インターネット全体にとっても健全ではなさそう
20年近く、広告よりましなコンテンツ制作者への報酬手段が必要だと嘆かれてきたが、これがその答えになり得る
Anthropic と OpenAI が盗用されたコンテンツの上に築かれているという批判も続いてきたので、この現実を無視しながら両方を望むことはできない
提供範囲が広すぎるということなのか、同様のサービスを誰も提供していないと見ているのか、このような包括的な批判だけでは理解しにくい
Cloudflare がエージェント製品を販売しながら、同時にウェブ上でのエージェント利用をブロックするかのようなサービスを出しているのは、やや妙に感じる
マウスの軌跡以外にもはるかに多くのシグナルを使うだろうが、タッチスクリーンや ThinkPad のトラックポイントのような非伝統的な入力デバイスでは、すでに判別が難しい場合がある
アクセシビリティ用のマウスツール利用者をボットと誤認すると深刻だが、それを例外処理すればエージェントブラウジングの抜け道にもなり得る
それでも、エージェントボットの悪用やスパムを減らすという点では、ほぼ確実に良い方向
良いボットが使うためのサービスを提供しつつ、悪いボットをブロックする支援はできる
ボットがマウスの動きを下手にまねるなら強力な異常シグナルになり、良いボットなら
robots.txtに従い、自分がボットであることを隠さないはず6年前に hCaptcha でこれらの機能はすべて実装されていた
人間とボットを区別するだけでなく、同じ人物が複数アカウントを作ったり複数のクレジットカードを試したりするときに現れるキーボード・マウスの挙動まで識別していた
Cloudflare が 2020年に hCaptcha へ移行したとき、こうした悪用検知が含まれており、2022年に hCaptcha から離れた時点ではすでに自社実装しているものだと思っていた
ページ内でアクセシビリティを検索しても結果がないので、こうしたマウス移動占星術は、視覚障害者やキーボード専用ユーザーをインターネットのかなりの部分から完全に排除しそう
ログインして匿名性を放棄すれば、ボットではないと見なされそう
一部の地域ではスマートフォンがなければ航空便のチェックインすらできず、旅行そのものが不可能だが、ほとんどの人はそれを当然のように受け入れている
エージェント検知は新しく形成されつつある分野で、今後はるかに重要になるはず
関連製品には Foil(https://usefoil.com/), Kasada https://www.kasada.io/, DataDome(https://datadome.co/), Castle(https://castle.io/), Fingerprint(https://fingerprint.com/), HUMAN(http://humansecurity.com/), 事実上 reCAPTCHA の後継である Google Cloud Fraud Defense(https://cloud.google.com/security/products/fraud-defense?hl=...), Cloudflare Precursor がある
現在の主な用途は、自動化されたクレデンシャルスタッフィング、偽アカウントと無料トライアルの悪用およびそれに伴う Twilio SMS コスト、決済詐欺、LLM スクレイピング、チケットやスニーカーの自動買い占め防止
どの用途が企業需要をけん引するのか気になるし、エージェントを無条件にブロックするのではなく、検知後にエージェント専用経路へ送り、ユーザーに代わってウェブを探索し作業できるようになることを望む
数億個の家庭用 IP、人間に似たブラウザフィンガープリント、カスタムブラウザバイナリを提供し、Turnstile、reCAPTCHA v3、Kasada、DataDome、AWS WAF などが出てくると自動的に回避する
プロファイリングとステップ遷移確率を組み合わせ、チャージバックリスクのある決済のようなデジタル資産の特定領域だけで、エージェントに追加認証を求めたりブロックしたりできるようにする
現在の Precursor は、同じサイトで複数の文書を取得するスクレイピング検知により注力しているようだ
ボットやエージェントが人間のカーソルの動きをまねた微細な揺れを加えたら、何で防げるのか気になる
ほかのシグナルも使うのだろうが、このシグナルに限っては、ボットが少し精巧になるだけで簡単に回避できそうに見える
基本的な機械学習のクラスタリングだけでも、ボットのマウス・キーボード・タッチ操作を人間と区別できるが、視線追跡のような補助機能を使う障害者も差別する可能性が高い
片手だけを使う人の行動は典型的なユーザーと大きく異なり得るし、現在の米国では California・Illinois・NY 以外の地域で ADA の執行も弱い
Cloudflare のように影響力の大きい企業は、障害者がこうした行動分析の被害を受けないよう、保守的にフィルタリングすべきだ
「ボットである可能性のスコアだけを提供し、しきい値は各ウェブサイトが決める」と責任を転嫁したうえで、障害者がブロックされるのはサイトがしきい値を厳しすぎる設定にしたせいだ、などと言ってはならない
この規模では、判断の二次的・三次的な影響まで責任を負うべきだ
このデータはボットだけでなく、性別、利き手、おおよその年齢、キー入力パターンに基づく母語、けがと回復過程、精神的・身体的障害まで区別できる
サイト内の移動方法から ADHD、統合失調症、Parkinson 病、薬物使用と治療効果まで推定できるため、これらすべてのシグナルで典型的な人間と同じクラスタに入るようにまねるのは非常に難しい
短期的には通用するかもしれないが、時間がたつとはっきりしたパターンが現れ、特定のサイトやレイアウトごとの揺れデータも多様なので、人工的な模倣を簡単に検出できる
同じユーザーでも入力デバイスによって動きは変わる
仕事用 PC ではマウス、個人用ノート PC ではタッチパッド、仕事用ノート PC では ThinkPad のトラックポイントを使うので、1人に3つの行動プロファイルが生まれる
AI の動きとは違うだろうが、マウスの動きのフィンガープリントがもう一つの関門になるなら、興味深い外れ値がたくさん現れるかもしれない
Cloudflare はインターネットを守っているふりをするべきではない
https://developers.cloudflare.com/browser-run/quick-actions/...
この会社はタバコを売りながら病院も建てる企業のようなものだ
Cloudflare が私の手首の状態データを保険会社に売る日が楽しみだ。私たちが自分たちで作った監視地獄は実にすばらしい
最近 Cloudflare の誤検知のせいで、セッションで読み込みだけが続き、実際のページに進まないことがよくある
勘でコーディングした新しい解決策を毎日出し続けるなら、サービス品質にも悪影響が出るのではないかと心配している