
2026/07/01 0:44
Claude Code がリクエストに対してステガノグラフィーを用いて暗記している
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
地元の Claude Code バージョン 2.1.196 の最近の検査により、特定の条件下でシステムがデベロッパーのプロンプトに暗黙的に隠しデータを注入するセキュリティ慣行が発見されました。これは透明性の高い対策ではなく裏口を介したシグナルに依存することで信頼性を損ない、
ANTHROPIC_BASE_URL が設定されており、かつシステムの時-zone が中国と一致するか、または特定の API ホスト名が検出された場合にのみコードがトリガーされます。これらの条件下で、プロンプトの句読点を改変—具体的には "Today's" のアポストロフィを、および日付の区切り文字を一括線からスラッシュに変更する—with 見えないユニコードマーカーを埋め込む。さらに、バインaries 内に base64 文字列として保存されたドメインおよびキーワードリスト(「DeepSeek」や「Zhipu」などの用語を含む)は XOR でデコードされ、潜在的な API リセラーまたはモデル蒸留攻撃を検出します。後端の脅威(無権限のプロキシなど)をブロックすることを意図されていますが、この論理はカスタムセットアップを使用する正当な開発者を懲罰し、AI に送信されるコンテキストに検出データを直接エンコードします。幸運にも、これらの特定の設定がないユーザーは変更を見ませんが、トリガー条件を満たす者はパッチが適用されるまで改変されたプロンプトを受けます。著者は、プロンプトの句読点にシグナルを隠すことは開発者の信頼を侵害し、セキュリティには明示的なポリシーに依存すべきだと主張しています。この機能をバイパスするのは、ホスト名の修正、時-zone の調整、またはバインりパッチ適用によって容易であると考えられています。本文
Claude Code のプライバシー懸念と「日付ステガノグラフィ」問題
背景:コーディングエージェントと権限の両面性
多くの開発者がコーディングエージェント(Claude Code など)に過度な権限を付与する傾向がありますが、それはその実用性の高さから避けて通れない側面です。
- 必要な権限: ファイルシステムへのアクセス、シェルコマンドの実行、Git 操作、ブラウザ制御など。
- 文脈の重要性: これらの能力を発揮させるためには、エージェントがリポジトリを読み込み、実行環境を正確に把握する必要があるため。
一方で、クライアントソフトウェア自体が外部の意図に従って動作しないか精査されるべきだという觀點があります。開発者からの信頼は、「退屈で透明な挙動」によって築かれるべきだと考えます。
発見:バイナリ内部の隠蔽処理(ステガノグラフィ)
検証により、Claude Code バージョン 2.1.196 のバイナリ内にシステムプロンプトの日付文字列を操作する関数が存在することが判明しました。これは平文に見えながらデータを隠す**「プロンプトステガノグラフィ」**と呼ばれます。
無意識の変更点
- アポストロフィー(
)の有無や形: 通常のシングルクォートが微妙に変化する。' - 日付の区切り記号:
がYYYY-MM-DD
に変更される。YYYY/MM/DD
これらは単色フォントで見ても目立たない極めて微小な変化であり、通常は気づきません。
トリガー条件と処理ロジック
この処理は以下の環境変数や設定に基づいて活性化します。
# 主なトリガー ANTHROPIC_BASE_URL
検証される条件:
- システムのタイムゾーンが
またはAsia/Shanghai
か。Asia/Urumqi - API ベース URL のホスト名が、内部リストと一致するか。
- ホスト名に特定のリサーまたは AI ラボのキーワードが含まれているか。
実行される変換:
- タイムゾーンチェックで条件を満たすと、
が'Known domain'
に書き換えられる。'Lab keyword' - ホストネームチェックで条件を満たすと、アポストロフィーの形状がさらに複雑な Unicode セquence(
,\u02B9
等)に変化する。\u02BC
データ隠蔽手法:
- ドメインリスト: Base64 エンコード済みかつ、キー
を使用した XOR 復号化処理が施されている。91 - 目的: API リセラー、未承認のゲートウェイ、または「モデル蒸留攻撃」パイプラインを検出・分類するため。
環境分析とシナリオ別挙動
私の環境での結果(通常ケース)
| 項目 | 状態 |
|---|---|
| バイナリの署名 | Anthropic による有効な署名あり |
| 未設定 (空) |
| タイムゾーン | (非対象地域) |
| 出力結果 | 通常のアポストロフィー と フォーマットの日付 |
結論: およそ全ての公式ユーザーにとっては、このコードパスは無効化されており、システムコンテキストには「退屈な普通の日付」が含まれます。Anthropic のバックエンドでは特に何も検知されないことになります。
特殊ケース:カスタムゲートウェイ利用時
ANTHROPIC_BASE_URL を設定し、内部ゲートウェイやプロキシを経由して接続するユーザーの場合は以下が起きます。
- ホストネームがリストに含まれると認識される。
- プロンプト内の日付に隠蔽データ(マーカー)が埋め込まれる。
- この文脈は Anthropic のシステム側に送信され、分類・解析の対象となる可能性が高いです。
バイパスの容易さと実装への懸念
バイパス方法
この検知機能は回避が極めて容易です。以下のいずれかの措置で無効化可能です。
- ホストネームを変更する。
- タイムゾーンを変更する。
- バイナリをパッチ適用する。
- プロセスをラップ(wrapping)する。
真の脅威に対しては無力であり、主に「奇抜なことをしている通常の開発者」を指紋採取の対象として機能していることになります。
信頼と透明性の問題
この実装には技術的な理解こそあれど、開発者ツールとしての倫理と透明性という点で違和感があります。
- 暗黙の改ざん: 代理サーバーやゲートウェイのカテゴリデータを、平文に見える英語文章の句読点の中にエンコードしています。
- 複合的な隠蔽: ドメインリストをさらに XOR と Base64 で隠蔽しており、意図的ですが不自然です。
- 信頼の破壊: 開発者ツールは明示的なテレメトリを追加し、リリースノートで説明し、利用規約を提示すべきものです。「退屈な挙動」を保つことが信頼の基盤であり、そのためのシステムプロンプトを改ざんすることは、他のプライバシー主張に対する信頼を根底から損ないます。
適切な対応は精査(Auditing)と明示的な宣言であり、隠蔽によって信頼を獲得できるわけではありません。