Claude Code 2.1.196 プロンプト・ステガノグラフィーの発見
Claude Code 2.1.196 プロンプト・ステガノグラフィーの発見
Claude Code は API ゲートウェイを特定するためにステガノグラフィー・マーカーを使用しています
Claude Code バージョン 2.1.196 には、ユーザーの環境に関するメタデータをエンコードするために、システムプロンプトの日付文字列を密かに変更する関数が含まれています。視覚的に類似した Unicode 文字(具体的には "Today's" のアポストロフィと日付の区切り文字)を変更することで、ツールは API バックエンドに送信される生の要求に分類信号を埋め込みます。プロンプト・ステガノグラフィーとして知られるこの手法により、Anthropic は、ユーザーの知らないうちに、ツールが許可されていないゲートウェイ、リセラー、または競合する AI ラボを通じてルーティングされているかどうかを特定できます。
プロンプト変更の環境トリガー
ステガノグラフィー・マーキング・プロセスは、ANTHROPIC_BASE_URL 環境変数セットされている場合のみトリガーされます。これは、ユーザーがデフォルトの Anthropic API エンドポイントを使用していないことを示しています。トリガーされると、ツールは以下の条件を評価して、どのマーカーを使用するかを決定します。
タイムゾーンに基づくマーキング
もしシステムタイムゾーンが Asia/Shanghai または Asia/Urumqi に設定されている場合、日付の区切り文字はハイフン (-) からスラッシュ (/) に変更されます。
ホスト名に基づくマーキング
ツールは、ANTHROPIC_BASE_URL のホスト名を、デコードされたドメインとキーワードのリストと比較してチェックします。"Today's" という単語のアポストロフィは、ホスト名の分類に基づいて以下のように置き換えられます。
| 条件 | アポストロフィ文字 | Unicode コードポイント |
|---|---|---|
| 通常 | ' |
標準のアポストロフィ |
| 既知のドメイン | ’ |
右シングル引用符 |
| ラボのキーワード | ʼ |
修飾文字アポストロフィ |
| 既知のドメインおよびラボのキーワード | ʹ |
修飾文字プライム |
難読化とターゲットの特定
これらのチェックを隠すために、ドメインとキーワードのリストは base64 文字列として保存されており、キー 91 を使用して XOR デコードされます。デコードされたリストには以下が含まれます。
- AI ラボのキーワード:
deepseekやzhipuなどの用語。 - ドメイン リスト: 中国の企業ドメイン、AI 企業のドメイン、およびさまざまなプロキシ、リセラー、ゲートウェイのドメインの包括的なリスト。
開発者の信頼とプライバシーへの影響
Claude Code は、ファイルシステムへのアクセス、シェル実行、および git 統合を含む広範な権限を必要とするため、隠されたテレメトリ・メカニズムの発見は、ツールのバイナリの完全性に関する懸念を引き起こします。マーカーは、おそらくモデルの蒸留攻撃を防ぎ、API の悪用を検知するために意図されているものですが、明示的なテレメトリ・フィールドやドキュメントを使用するのではなく、システムプロンプト内でこの挙動を隠すという選択は、高権限の開発者ツールに期待される「退屈な挙動(boring behavior)」の侵害と見なされます。
公式の Anthropic API エンドポイントを使用している、または ANTHROPIC_BASE_URL が設定されていない大多数のユーザーにとって、日付プロンプトは変更されません。しかし、この機能は、内部ゲートウェイ、ローカルプロキシ、または研究セットアップを使用している開発者を具体的にターゲットにしており、その分類をプロンプトの句読点にエンコードしています。