技術 約5分で読めます

Claude Codeのソースコード全公開とOpenAI Codexのトークン窃取脆弱性が同時期に発覚

2026年3月末、AIコーディングツールのセキュリティに関する2つの大きな話題が重なった。AnthropicのClaude Codeはnpmレジストリ経由でソースコード全体が閲覧可能な状態になっていたことが発覚し、OpenAIのCodexはブランチ名パラメータのコマンドインジェクションでGitHubトークンが窃取可能だった脆弱性が公開された。

Claude Codeのnpmソースマップからの全ソース流出

発見の経緯

3月31日、セキュリティ研究者のChaofan Shou(@Fried_rice)が、npmに公開されていた @anthropic-ai/claude-code バージョン2.1.88に57MBのソースマップファイルが同梱されていることを発見した。

ソースマップはミニファイされたJavaScriptを元のソースコードにマッピングするデバッグ用ファイルで、ブラウザのDevToolsなどで使われる。Claude CodeのビルドツールであるBunのバンドラーはデフォルトでソースマップを生成するため、.npmignorepackage.jsonfiles フィールドで明示的に除外しない限りnpmパッケージに含まれてしまう。

流出した規模

項目数値
TypeScriptファイル数約2,300
コード行数512,000行超
ソースマップサイズ57MB
組み込みツール数約40
スラッシュコマンド数約50

流出したのはCLIクライアント側のコードであり、モデルの重み、学習データ、サーバーサイドのAPIシステムは含まれていない。

内部アーキテクチャ

ソースマップからClaude Codeの内部構成が詳細に判明した。

モジュール規模内容
クエリエンジン約46,000行LLM APIの呼び出し、ストリーミング、キャッシング、オーケストレーション
ツールシステム約29,000行ファイル操作、Bash実行、Web取得、LSP連携など約40のパーミッションゲート付きツール
マルチエージェント「Swarms」と呼ばれる並列タスク実行機構。隔離されたコンテキストで複数のエージェントを同時に動かす
IDEブリッジVS CodeやJetBrains拡張とJWT認証で双方向通信
永続メモリセッション間でコンテキストをファイルベースで保持

ランタイムはNode.jsではなくBunを使用し、ターミナルUIはReact + Inkでコンポーネントベースのレンダリング、バリデーションはZod v4で統一されている。

未公開機能とフィーチャーフラグ

44個のフィーチャーフラグが見つかり、ビルド済みだが出荷されていない機能の存在が明らかになった。

注目を集めたのはBUDDYだ。たまごっち風のAIペット機能で、入力ボックスの横に吹き出しで表示される。種族やレアリティ階層、キャラクターのステータスシステム、帽子の着せ替え、アニメーションシーケンスまで実装されており、隠しコマンド /buddy でアクセスできる。

未公開モデル「Capybara」

コードベースから未発表のモデルファミリーへの参照も見つかった。

  • capybara
  • capybara-fast
  • capybara-fast[1m]

Anthropicが公式にアナウンスしていないモデル名だ。

テレメトリとユーザー行動追跡

ユーザーの行動を詳細に記録するテレメトリ機能も判明した。ユーザーが不満を表明したかどうかを検出するフラストレーション指標(プロファニティ検出)や、「continue」プロンプトの繰り返し回数など使用パターンのログが含まれていた。

Anthropicの対応

Anthropicはnpmから該当バージョンを取り下げたが、本稿執筆時点で公式声明は出していない。なお、これは初めてではない。2025年初頭にも同様のソースマップ流出が起きている。

OpenAI Codexのブランチ名コマンドインジェクション

脆弱性の概要

BeyondTrustのPhantom Labs部門が、OpenAI Codexにコマンドインジェクション脆弱性を発見した。タスク作成APIのHTTPリクエストで、GitHubのブランチ名パラメータに対する入力サニタイズが不十分だった。

攻撃の流れ

graph TD
    A["攻撃者がブランチ名に<br/>悪意あるコマンドを埋め込む"] --> B["Codex APIにタスク作成<br/>リクエスト送信"]
    B --> C["Codexがブランチ名を<br/>シェルコマンドに渡す"]
    C --> D["入力サニタイズなし<br/>コマンドが実行される"]
    D --> E["コンテナ内のauth.jsonから<br/>GitHubトークンを読み取り"]
    E --> F["トークンをタスク出力<br/>または外部サーバーに送信"]
    F --> G["被害者のリポジトリに<br/>読み書きアクセス"]

攻撃者はUnicodeの表意空間(Ideographic Space)を使ってブランチ名にコマンドを注入する。この文字は見た目は通常のスペースと同じだが、シェルに渡されるとコマンド区切りとして機能する。Codexのコンテナ内に保存されている auth.json からGitHub OAuthアクセストークンを平文で抽出できた。

影響範囲

ChatGPTのWebインターフェース、Codex CLI、Codex SDK、IDE拡張の全コンポーネントが影響を受けた。窃取されたトークンは被害者のプライベートリポジトリへの読み書きアクセス権を持つため、サプライチェーン攻撃の起点になり得る。

対応タイムライン

日付イベント
2025-12-16BeyondTrust Phantom Labsが脆弱性を報告
2025-12-23OpenAIが初回ホットフィックスを適用(7日後)
2026-01-30シェルコマンド保護の強化パッチ
2026-02-05Critical Priority 1に指定、修正完了

報告から初回対応まで7日、完全修正まで約7週間。悪用された形跡は確認されていない。

GPT-5.4のCodexリポジトリからの漏洩

Codexの脆弱性とは別に、OpenAIの公開GitHubリポジトリ(openai/codex)からも情報が漏れている。

2月27日のPR #13050でフル解像度ビジョンサポートが追加された際、モデルの最小バージョンが (5, 4) と記述されていた。3月2日のPR #13212では /fast スラッシュコマンドと ServiceTier enumが追加され、ここにもGPT-5.4への参照があった。

OpenAIは5時間の間に7回のforce pushでバージョン番号を書き換え、従業員がモデルセレクタのドロップダウンにGPT-5.4が表示されているスクリーンショットを投稿した件も削除した。公式声明は出ていない。


Claude Codeは .npmignore にソースマップを追加するだけで防げた話だし、Codexはブランチ名のサニタイズという基本中の基本が抜けていた。どちらも高度な攻撃ではなく、ビルドパイプラインの設定ミスと入力バリデーションの欠如だ。