Claude Code ステガノグラフィ事件:Anthropicの見えないUnicodeフィンガープリント(2026)

Claude Codeをプロキシ経由で使う開発者・DevSecOps担当者が直面した2026年6月の「見えないフィンガープリント」報道——ANTHROPIC_BASE_URLapi.anthropic.com以外を指すと、報道ではシステムプロンプト内の「Today's date is…」行にUnicode単引用符と日付区切りが秘密裏に書き換えられるとされています。本記事は事件A(4月・Claude Desktop Native Messaging)と事件B(6月・Claude Code ステガノグラフィ)の切り分け、Unicode対応表、XOR(91)難読化、147ルール、HN 350+ポイント議論、2.1.197削除までを網羅し、5段防御RunbookとFAQ10問を提供します。

ターミナル上のソースコード解析画面——開発者ツールのセキュリティ監査を象徴するイメージ

目次

一、課題:Claude Code利用者が抱える三重の不安

  1. 非開示のクライアント改変:シェル実行・ファイル読み書き権限を委ねる開発者ツールに、リリースノート未記載の分類ロジックが埋め込まれていた——報道は開発者コミュニティに大きな信頼危機をもたらしたとされています。
  2. 事件の混同リスク:2026年4月のClaude Desktop Native Messaging問題(Alexander Hanff氏の報告)と、6月30日のClaude Code ステガノグラフィ報告(thereallo.dev)が同一の「Anthropicスパイウェア」ナラティブに束ねられ、技術的に異なる2事件の切り分けが困難になっています。
  3. プロキシ利用者の盲点ANTHROPIC_BASE_URLで企業ゲートウェイやOpenAI互換ルーターを設定しているチームは、通常のAPI利用者と異なるコードパスを通る可能性があり、自社が分類対象になっているか確認手段がありませんでした。

二、事件A vs 事件B:比較マトリクス

Anthropicエコシステムで2026年上半期に報道された2つの「非開示動作」は、製品・メカニズム・研究者が異なります。混同を避けるため、以下の表で整理します。

比較軸事件A:Claude Desktop(2026年4月)事件B:Claude Code(2026年6月)
報告者プライバシー研究者 Alexander Hanff 氏開発者 thereallo(thereallo.dev)
対象製品Claude Desktop(macOS Electronアプリ)Claude Code CLI(npm/@anthropic-ai/claude-code)
メカニズムChromium系7ブラウザへcom.anthropic.claude_browser_extension.json Native Messagingマニフェストを無告知で書き込み・起動時に再生成システムプロンプト内「Today's date is…」行のUnicode単引用符差し替え+日付区切り変更
発火条件Claude Desktopのインストール・起動(ユーザー同意なし)ANTHROPIC_BASE_URLapi.anthropic.com の場合のみ(報告による)
独立検証Noah Kenney 氏がHanff氏の主張を再現可能と確認したと報じられているHNコミュニティ350+ポイントの議論、複数メディアが逆向解析を引用
Anthropic対応UI非表示の「Chrome Extension MCP」サブシステムとして存在Thariq Shihipar氏が「実験的対策」と説明、v2.1.197(2026年7月1日)で削除と報じられている
批判の焦点OS権限の無告知改変・ePrivacy Directive Article 5(3)違反の可能性プロンプト内秘密チャネル・開発者ツールへの信頼侵害・蒸留対策の非透明性
事件Aは「ブラウザサンドボックス外への事前承認ブリッジ」、事件Bは「モデルコンテキスト内の不可視テレメトリ」——いずれもAnthropicがユーザーに明示しなかった動作ですが、攻撃面と影響範囲は根本的に異なります。

三、技術解剖:Unicode・トリガー・難読化

3.1 発火条件:ANTHROPIC_BASE_URL

報道による逆向解析では、Claude Codeは環境変数ANTHROPIC_BASE_URLを読み取り、未設定またはapi.anthropic.comを指す場合は通常の日付行を返すとされています。カスタムエンドポイント——企業APIゲートウェイ、LiteLLMプロキシ、OpenAI互換ルーター、非公式リセラーAPI——が設定された場合のみ、分類ロジックが作動すると報じられています。

3.2 Unicode単引用符マッピング表

報告では、プロキシ検知状態を「Today's」の単引用符バリアントにエンコードするとされています。肉眼では区別困難ですが、Unicodeコードポイントで判別可能です。

文字Unicode名称報告される意味
'U+0027APOSTROPHE(ASCII)ベースライン(トリガーなし/既知ドメイン・ラボKW両方未検出)
'U+2019RIGHT SINGLE QUOTATION MARK既知ドメイン(known domain)検出
ʼU+02BCMODIFIER LETTER APOSTROPHEAIラボキーワード(lab keyword)検出
ʹU+02B9MODIFIER LETTER PRIME既知ドメイン+ラボKW両方検出

3.3 タイムゾーン検知:Asia/Shanghai / Asia/Urumqi

報告では、カスタムBASE_URLが設定された場合、システムタイムゾーンがAsia/ShanghaiまたはAsia/Urumqiのとき、日付区切りがYYYY-MM-DDからYYYY/MM/DDへ変わるとされています。VPN接続下でも通常エンドポイント利用者は対象外と報じられており、プロキシ設定とタイムゾーンの組み合わせが分類ビットを構成すると推測されています。

3.4 base64 + XOR(91) 難読化と147ルール

thereallo.devの報告では、ドメインリストとAIラボキーワードリストはbase64エンコード後にXORキー91で難読化されてバイナリ内に埋め込まれていたとされています。厳密な暗号化ではなく、 casual な文字列検索を回避する程度の難読化です。デコードされたキーワードにはdeepseekmoonshotminimaxzhipubaichuanstepfun01ai等が含まれると報じられ、ドメインルールは約147件に及ぶとされています。

// 報告で言及された難読化デコーダの概念例(Kup=91 がXORキー) var Kup = 91; function decodeList(obfuscated) { var raw = atob(obfuscated); var out = ""; for (var i = 0; i < raw.length; i++) { out += String.fromCharCode(raw.charCodeAt(i) ^ Kup); } return out; }

3.5 anti-distillation(蒸留防止)動機

Anthropicは2026年2月頃、蒸留攻撃への防御投資——分類器、行動フィンガープリント、ANTI_DISTILLATION_CCフラグによる偽ツールデータ注入——を公表していました。Claude CodeチームのThariq Shihipar氏は、今回のコードを「3月に開始した実験」で「不正リセラー防止と蒸留保護」が目的だったとX上で説明したと報じられています。ただしリリースノート2.1.91(2026年4月2日)には一切記載がなく、非開示の実装選択が批判の中心となりました。

四、バージョンタイムライン

日付バージョン/イベント
2026年4月2日Claude Code v2.1.91リリース——報告ではステガノグラフィロジックの初出とされる(CHANGELOG未記載)
2026年4月20日頃事件A:Alexander Hanff氏がClaude Desktop Native Messaging問題を公開
2026年6月30日事件B:Reddit投稿後、thereallo.devがClaude Code逆向解析レポート公開
確認バージョンv2.1.193、v2.1.195、v2.1.196に該当コードが存在すると報告
2026年7月1日v2.1.197リリース——AnthropicがPRマージ済み、ステガノグラフィコード完全削除と報じられている
議論規模Hacker Newsで350ポイント超の議論、メディア各紙が続報

五、引用可能なハードデータ

  1. Unicodeコードポイント4種+日付区切り1ビット:報告では、プロキシ分類状態(known domain / lab keyword / 中国TZ)が合計4ビット相当の情報を「Today's date is 2026/06/30.」のような無害な英文に埋め込むとされています。
  2. 147件のドメインルール+7 AIラボキーワード:XOR(91)難読化リストに中国系AI企業ドメイン、プロキシ/リセラーURL、deepseek/moonshot/zhipu等のキーワードが含まれると報じられています。
  3. Claude for Chrome prompt injection成功率23.6%(緩和前)/ 11.2%(緩和後):事件Aの文脈で引用されるAnthropic公式数値——Native Messagingブリッジと組み合わさると攻撃面拡大の懸念が指摘されています(Antiy Labsレポート等)。

六、5段防御Runbook:Claude Code ステガノグラフィ対策

  1. バージョン監査と即時更新claude --versionで2.1.197以降を確認。npm update -g @anthropic-ai/claude-codeで最新版へ。2.1.193–196は報告されたロジックを含む可能性あり。
  2. ANTHROPIC_BASE_URL棚卸し:シェルプロファイル、.env、CI/CDシークレット、launchd plist内のBASE_URL上書きを一覧化。正当な企業ゲートウェイかリセラーAPIかを文書化。
  3. システムプロンプトスポット検査:APIプロキシミラーまたはデバッグログでsystemプロンプト内の「Today's date is…」行を確認。U+0027以外の単引用符やYYYY/MM/DD形式はフィンガープリント痕跡の可能性。
  4. APIルーティング正規化:可能な限りANTHROPIC_BASE_URLを削除し公式エンドポイントへ。LiteLLM等のゲートウェイ必須環境ではAnthropic契約範囲内か確認し、プロンプト改変の有無を定期監査。
  5. 隔離検証環境の構築:本番API Keyと分離した検証ノードでClaude Codeを運用し、JSONLログでプロンプト改変を継続監視。Macクラウドノードへの分離デプロイを推奨。
# ステップ1:バージョン確認と更新 claude --version # 2.1.197未満なら更新 npm update -g @anthropic-ai/claude-code # ステップ2:BASE_URL設定の確認 echo $ANTHROPIC_BASE_URL grep -r "ANTHROPIC_BASE_URL" ~/.zshrc ~/.bashrc ~/.env* 2>/dev/null # ステップ4:公式エンドポイントへ正規化(一時的) unset ANTHROPIC_BASE_URL

結語:ベンダー信頼とMacクラウドという選択肢

Claude Code ステガノグラフィ事件は、AIベンダーがクライアント側で非開示の分類信号を埋め込む設計選択が開発者コミュニティの信頼をいかに揺るがすかを示した事例です。Anthropicはコード削除(v2.1.197)と「実験的対策だった」という説明で対応したと報じられていますが、CHANGELOG未記載の実装は今後も監視が必要です。Linux GPU VPS上でClaude Codeゲートウェイを自前運用する方法もありますが、CUDAドライバ排障・シェル権限管理・プロンプト監査の複雑さは長期運用コストを押し上げます。Windows WSL経由のClaude Code利用も可能ですが、Apple Silicon最適化ツールチェーンやlaunchd 7×24常駐との相性は限定的です。プロンプト改変を隔離検証し、API Keyを分離し、JSONLログで監査可能なClaude Code本番環境を構築するなら、VPSMACのM4 Macクラウドノードがより安定した選択肢です:ネイティブmacOS、SSH即時接続、launchdデーモン、Cursor Agent / Claude Codeワークフローとの天然共存——プロキシ設定の棚卸しから隔離検証まで、一つのMacノードで完結できます。

七、FAQ

Q1:ステガノグラフィフィンガープリントとは何ですか?

報道によると、ANTHROPIC_BASE_URLがカスタムプロキシを指す場合、Claude Codeはシステムプロンプト内の単引用符をUnicodeバリアントに差し替え、分類情報をAnthropicサーバーへ送るとされています。

Q2:通常のapi.anthropic.com利用者にも影響しますか?

逆向解析報告では、BASE_URLが未設定または公式エンドポイントの場合、このコードパスは発火しないとされています。

Q3:事件Aと事件Bの違いは?

事件A(4月)はClaude DesktopのNative Messaging無告知インストール、事件B(6月)はClaude Codeのプロンプト内Unicodeマーキング——製品とメカニズムが異なります。

Q4:影響バージョンは?

報告では2.1.193–196に確認、2.1.91(4月2日)から存在、2.1.197(7月1日)で削除とされています。

Q5:Anthropicは認めましたか?

Thariq Shihipar氏がX上で「3月開始の実験的対策」と説明し、2.1.197でロールバック予定と述べたと報じられています。

Q6:なぜ実装されたのですか?

不正リセラー防止とモデル蒸留(distillation)対策が目的だったと報じられています。ANTI_DISTILLATION_CC等と並ぶ防御策の一環と推測されています。

Q7:スパイウェアと言えますか?

事件AはOS権限改変、事件Bは秘密チャネル——いずれも「スパイウェア」呼称で議論されました。Anthropicは悪意ある機能ではないと説明したと報じられています。

Q8:Asia/Shanghaiだけでマーキングされますか?

主トリガーはANTHROPIC_BASE_URLの上書きです。中国TZは追加ビットとして日付区切りを変更すると報告されています。

Q9:フィンガープリント確認方法は?

systemプロンプト内「Today's date is…」行のUnicodeコードポイントと日付区切りを確認。2.1.197以降へ更新を推奨します。

Q10:企業ゲートウェイも対象ですか?

報告ではapi.anthropic.com以外の任意カスタムエンドポイントが分類対象となり得ます。社内プロキシ利用時も影響範囲を確認してください。

八、出典