概要
- ChatGPT利用時、Cloudflare Turnstileが 高度な指紋認証 プログラムを自動実行
- 3層構造・55項目 の詳細な環境チェックによる 高度なボット検知
- 暗号化ロジック は単純なXORで、 解析は容易
- Reactアプリの完全描画 が必須条件
- 追加の行動・PoWチェック も組み合わせた多層防御
ChatGPTにおけるCloudflare Turnstileの高度な指紋認証
- ChatGPTの各メッセージ送信時、Cloudflare Turnstileプログラムが ブラウザ内で自動実行
- ネットワークトラフィックの解析 で377件のTurnstileプログラムを 復号化
- 従来のブラウザ指紋認証 を超える、 3層・55項目 の詳細なプロパティ確認
- ブラウザ層 :GPU、画面、フォント、WebGL、ストレージ等
- Cloudflareネットワーク層 :IP、都市、地域情報(edge headers)
- ChatGPT Reactアプリ層 :__reactRouterContext、loaderData、clientBootstrap
- 実ブラウザかつReact SPAの完全描画 が検証対象
- 単なる指紋偽装やHTML取得のみのボットは 検知・排除
Turnstile暗号化ロジックの詳細
- Turnstileプログラム本体 は 2段階の暗号化
- 外側:pトークンとXOR(HTTPリクエスト内で完結)
- 内側:サーバー生成のfloat値(例:97.35)とXOR
- 暗号キーはペイロード内に埋め込み
- 解析すれば 容易に復号化可能
- 復号フロー
- prepareリクエストからp取得
- prepareレスポンスからturnstile.dx取得
- XORで外側復号→bytecode抽出
- 指定float値で内側復号→本プログラム抽出
- 暗号化の目的
- 静的解析・リプレイ攻撃の防止
- 指紋収集項目の秘匿
- Cloudflare側での柔軟な仕様変更
収集されるプロパティ一覧
- ブラウザ指紋(Layer 1)
- WebGL情報(UNMASKED_VENDOR_WEBGL等8項目)
- 画面情報(colorDepth, width等8項目)
- ハードウェア情報(hardwareConcurrency等5項目)
- フォント計測(fontFamily, getBoundingClientRect等4項目)
- DOM操作(createElement等8項目)
- ストレージ(localStorage等5項目)
- Cloudflareネットワーク情報(Layer 2)
- cfIpCity, cfIpLatitude, cfIpLongitude, cfConnectingIp, userRegion
- Reactアプリ状態(Layer 3)
- __reactRouterContext, loaderData, clientBootstrap
トークン生成と送信の流れ
- 全55項目を収集後、JSON化→XOR暗号化→最終トークン化
- OpenAI-Sentinel-Turnstile-Token として 各リクエストに付与
Sentinelの追加検知・防御機能
- Signal Orchestrator
- keydown, pointermove, click, scroll, paste, wheel等の 行動イベント監視
- window._oai_so*プロパティで ユーザー行動の生体的特徴を計測
- Proof of Work(PoW)
- 25項目の指紋+SHA-256 hashcashによる 計算コスト付与
- 難易度はランダム(大半は5ms以内で解決)
- 7種のバイナリ検知フラグ(全サンプルでゼロ)
プライバシー・運用上の注意点
- 暗号化は実質的に難読化のみ
- XORキーは常に同一データ内に含まれるため 運用者側は全復号可能
- ユーザーと運用者間のプライバシー境界は運用ポリシー次第
- 目的は攻撃者・ボット対策と仕様秘匿
まとめ・実運用での意味
- ChatGPT利用時は高度な多層的ボット検知が常時作動
- 単純な指紋偽装・ヘッドレスブラウザでは突破困難
- CloudflareとOpenAIによる強固なセキュリティ運用
- ユーザー側での回避や解析は容易ではない設計