世界を動かす技術を、日本語で。

ChatGPTはCloudflareがあなたのReactステートを読み取るまで入力を許可しません

2026年3月30日原文(buchodi.com)

概要

  • 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による強固なセキュリティ運用
  • ユーザー側での回避や解析は容易ではない設計

Hackerたちの意見

これらのプロパティは、ChatGPT Reactアプリケーションが完全にレンダリングされて水和されている場合にのみ存在します。HTMLを読み込むヘッドレスブラウザは、JavaScriptバンドルを実行しないので、これらは持っていません。ブラウザAPIをスタブ化するボットフレームワークも、実際にReactを実行しないので、これらは持っていません。 > これはアプリケーションレイヤーでのボット検出であって、ブラウザレイヤーではありません。すべての高度なボット検出器や広告ブロック検出器がこれをやっていると思ってたんだけど?「JavaScriptが実行されなかった」という発見に何か明らかにすることがあるのかな?

それで、ChatGPTがこの文章を書くのに使われたんだね。せめてもうちょっと整理してほしいな。

ああ、ウェブブログの永遠の特徴だね。あまりにもごちゃごちゃしてて、言語モデルでも二度見するレベル。

おそらく、OpenAIがログアウトしたユーザーに無料のChatGPTを提供しているから、これが悪用されないようにしたいんだろうね。

うん、ちょうど1時間前にChatGPTで何か調べようと思ったら、普段使わないブラウザウィンドウで、ログインアカウントもない状態だったんだ。動かないだろうと思ったけど、驚いたことに、アカウントもクッキーもないのに、ちゃんと質問を受け付けて答えてくれたよ。

でも、ログインしてるかどうかに関係なくチェックしてるの?ChatGPTアプリもAndroidでPlay Integrityをチェックしてるのに気づいた(GrapheneOSがアプリの行動を監視するからね)、多分同じ理由で。ちなみにClaudeのアプリはやってないけど、ログインは必要だよ。

copilot.microsoft.comも同じような感じだろうし、クラウドの使い方も似たようなもんだよね。

5.2を月20ドルで使えるなら、めっちゃお得だよね。Codexの方もいつか何か起きるだろうし。

もしかしたら、著者はなぜこれが重要なのかをもっと明確にすべきだったかも。OpenAIは本物のReactアプリを使ってほしいってことなんだ。それって…まあ、いいの?オチを探して記事をざっと読んだけど、特にオチはなさそうだね。

それは、この記事がAIのゴミだからだよ。

ボットの持ち主が、グラフィックスアクセラレーション付きのWindows 11の完全なVMをGoogle Chromeで動かせばいいのに、って全然理解できない。メモリページの重複排除を使えば、50台同時に動かせるんじゃないかな。 decentなCPUとGPUがあれば、1秒間に50ページをレンダリングできるはずだよ。それでAWSで1,000ページ読み込みあたり1セントだし、めっちゃ安いよね。

もし、GPUパススルーなしで良いグラフィックスアクセラレーション付きのWindows 11 VMを簡単に動かす方法を知ってたら、連絡してね。

Hacker Newsで議論の続きを見る