アプリケーション セキュリティ会社 Apiiro の新しい調査によると、Anthropic の Claude Code で最も便利なボタン「はい、もう聞かないでください」が、静かに認証情報を漏洩するマシンに変わったそうです。開発者がシークレットを含むコマンドを承認すると、Claude Code はシークレットを含むそのコマンドをローカル設定ファイルに保存し、最終的にパブリック GitHub リポジトリにコミットされることがよくあります。 Apiiro のスキャンにより、1,994 のパブリック リポジトリに存在する 2,539 件の実際の秘密が見つかりました。データベース パスワード、クラウド API キー、トークン、SSH ルート ログインは、63 の組織にまたがっており、そのほとんどがソフトウェア会社でした。影響を受けた企業の 1 社は、公開されたキーが生きていたことを研究者に確認しました。これは、このツールによる User-Agent ヘッダーを介した Web サイトへのユーザー電子メールの開示 に続いて、今月 2 回目のクロード コード プライバシー インシデントです。この事件は、連絡先の詳細だけでなく、運用インフラストラクチャにも影響を及ぼします。 AI ツールの報道 では、AI コーディング エージェントのセキュリティを詳しく監視しています。
アクセス許可ルールがリークになる仕組み
このメカニズムは、Claude Code の許可システムの副作用であり、シェル コマンドを実行する前に承認を求めます (多くの場合、セッションごとに複数回)。データベース接続をデバッグするか、内部 API を呼び出すようにエージェントに依頼すると、エージェントが提案するコマンドには、タスクに必要な資格情報が含まれます。資格情報なしでは動作できないためです。
「はい、再度質問しないでください」を選択すると、Claude Code がコマンドを実行し、プロジェクト フォルダー内の `.claude/settings.local.json` にアクセス許可ルールを書き込みます。ルールは抽象化されたものではありません。完全なコマンド文字列自体、プレーン テキストで入力されたパスワードなどすべてです。
このファイルは開発者のマシン上に残るように設計されており、Claude Code は開発者の グローバル git 無視リストに追加することでファイルを保護しようとします。これは一般的なケースをカバーしていますが、エッジ ケースはカバーしていません。つまり、後でリポジトリになるフォルダー、グローバル無視が存在しない別のマシン上のクローン、または無視エントリが追加される前に誰かがコミットしたファイルです。重要なのは、ルールがリポジトリ自体の `.gitignore` に組み込まれることはないため、プロジェクトには保護が適用されません。
問題をさらに悪化させるのは、Claude Code がファイル自体をコミットすることが多いということです。 Apiiro が本当の秘密を追跡した 1,105 のリポジトリのうち 539 で、Claude が共同作成したコミットによって設定ファイルが変更されていました。そのコミットでは、Sonnet 4.5 から Opus 5.5 までの範囲のモデルに名前が付けられていました。アピイロ氏は、この動作はモデルのものではなくクロード コード独自のものであると指摘しています。同社は Opus 5.5 と Fable 5.1 の両方でそれを再現しました。
暴露の規模
Apiiro は、GitHub 上に公開されている `.claude/settings.local.json` のコピーを 104,185 個数えました。そのうち 1,122 には、少なくとも 1 つの本当の秘密が含まれています。研究者らは、リポジトリの git 履歴、チームが意図的にコミットした共有「settings.json」ファイル、およびリポジトリにチェックインされた保存されたエージェント チャット記録に隠されたさらに 1,160 個の秘密を発見しました。
Apiiro のドキュメントの例は、最悪の場合のチェックリストのようなものです。データベース ベンダーは、独自の管理者レベルのクラウド API キーを、管理アクセス権付きで有効期限なしで、クラスター ホストとともに公開しました。 B2B スタートアップが運用環境の Azure Postgres パスワードを漏洩しました。ソフトウェア代理店が Square 実稼働アクセス トークンを公開しました。医療記録アプリケーションを構築している IT サービス会社が、そのデータベースの所有者パスワードを漏洩しました。オープンソース プロジェクトも同様にうまくいきました。1,000 個以上のスターを持つプロジェクトは OpenAI 形式の API キーを公開し、別のプロジェクトは npm トークンを公開しました。
セキュリティの状況により、結果はさらに悪化します。認証情報を盗むマルウェアはすでに開発者のマシンを大量に席巻しています。Apiiro 氏は、被害者のファイルに対して TruffleHog スキャナーを実行する Shai-Hulud npm ワームを指摘しています。同じスキャナーは、Apiiro が発見した 1,122 個の漏洩ファイルのうち 643 個にフラグを立てました。さらに心配なのは残留物です。漏洩したファイルの 5 つに 1 つは TruffleHog にも gitleaks にもフラグが立てられていません。これは通常、シークレットが認識可能なトークン形式のキーではなく、コマンド内に入力されたパスワードであるためです。言い換えれば、秘密スキャナーは構造的にこの漏洩クラスを認識できません。
影響を受けるチームがすべきこと
Apiiro の修復ガイダンスは、爆発範囲を調べることから始まります。 GitHub 組織で `.claude/settings.local.json` および `.claude/settings.json` を検索します。ヒットしたすべてのファイルは、誰でもすぐに読み取ることができます。すべてのフォークとクローンには履歴に含まれる内容がすべて保持されるため、ファイルが削除されている場合でも、各リポジトリの git 履歴を確認してください。次に、すべての開発者マシン上のローカル コピーを監査します。許可リストの各エントリは、誰かが承認したコマンドであり、そこに入力された内容はすべて含まれます。
会社の順序は重要です。最初に回転し、次に片付け。リポジトリからファイルを削除しても、すでに公開されていた資格情報は何も処理されず、公開されたシークレットは git 履歴によって無期限に保持されます。
A Pattern, Not a One-Off
Anthropic 社にとって、この発見は、Claude Code が User-Agent ヘッダーを介してアクセスしたすべての Web サイトにユーザーの電子メール アドレスを漏洩していたことが捕らえられてから 1 週間後に判明しました。このバグは、批評家が絆創膏と呼ぶプライバシー変更を配布することで修正されました。この 2 つのインシデントには根本原因が共通しています。それは、強力なコンテキスト (資格情報、連絡先の詳細、内部ホスト名) を処理し、そのコンテキストの送信先についてデフォルトの決定を下すエージェントです。
The lesson generalizes beyond Claude Code.コーディング エージェントが標準装備になるにつれて、コーディング エージェントが自身を整理するために書き込むファイルは、ソフトウェア サプライ チェーンの新たなスキャンされていない隅になりつつあります。アピイロの数値は、ほとんどの組織がまだ測定を始めていない規模でコーナーからの漏れがすでに起こっていることを示唆している。
AI の一歩先を行く
AI ツールは、安全性レビューが追いつかないほどの速さで出荷されています。 AI ニュース報道 であらゆる展開をフォローしてください。
AIニュースをもっと読む→