Apiiroのかなり胸に刺さる調査を見かけました。Claude Codeで「Yes, and don't ask again」をクリックすると、承認したコマンド全体がそのままプロジェクトファイルの .claude/settings.local.json に書き込まれ、パスワードやAPIキーまで平文で保存されます。
公開GitHubを調べたところ、このファイルが約10万4200件(約10万3600リポジトリ)見つかり、そのうち1122件(約1.1%)には少なくとも1つの秘密鍵が含まれていて、異なる鍵は合計1379個でした。Gitの履歴、チーム共有の settings.json、エージェントとの会話記録も含めると、秘密鍵は約2539個にのぼり、1994のリポジトリに散在していました。
3分の1以上はデータベースに直接アクセスできるもので、データベースのパスワードだけで379個ありました。ほかにも、インターネットに公開されたサーバーへのSSHログイン情報が43件、GitHub/GitLab/npmのトークンが42件、AWSキーが23件あり、約63の組織に関わっていました。研究者はこれらの鍵が使えるかどうかを試していませんが、通知を受けた企業の1社は、その鍵が当時まだ有効だったと確認しました。
Claude CodeはこのファイルをローカルPCのグローバルなgit excludesには追加しますが、プロジェクト自体の .gitignore には追加しません。そのため、別のPCに移ったり、ファイルがすでにコミットされていたりすると、保護は機能しなくなります。追跡対象となった1105のリポジトリのうち、539ではClaudeが共著者としてこのファイルを変更していました。16種類のコーディングエージェントを比較した結果、承認したコマンド全体をデフォルトでプロジェクトファイルに保存すると確認されたのは、Claude Codeだけでした。
研究者は、まずファイルに記載されたことのあるすべての秘密鍵をローテーションし、その後リポジトリをクリーンアップするよう勧めています。手軽だからと「今後は確認しない」を選ぶと、秘密鍵がこのように平文の設定ファイルへ書き込まれてしまいます。
#ClaudeCode #网络安全 #AI
公開GitHubを調べたところ、このファイルが約10万4200件(約10万3600リポジトリ)見つかり、そのうち1122件(約1.1%)には少なくとも1つの秘密鍵が含まれていて、異なる鍵は合計1379個でした。Gitの履歴、チーム共有の settings.json、エージェントとの会話記録も含めると、秘密鍵は約2539個にのぼり、1994のリポジトリに散在していました。
3分の1以上はデータベースに直接アクセスできるもので、データベースのパスワードだけで379個ありました。ほかにも、インターネットに公開されたサーバーへのSSHログイン情報が43件、GitHub/GitLab/npmのトークンが42件、AWSキーが23件あり、約63の組織に関わっていました。研究者はこれらの鍵が使えるかどうかを試していませんが、通知を受けた企業の1社は、その鍵が当時まだ有効だったと確認しました。
Claude CodeはこのファイルをローカルPCのグローバルなgit excludesには追加しますが、プロジェクト自体の .gitignore には追加しません。そのため、別のPCに移ったり、ファイルがすでにコミットされていたりすると、保護は機能しなくなります。追跡対象となった1105のリポジトリのうち、539ではClaudeが共著者としてこのファイルを変更していました。16種類のコーディングエージェントを比較した結果、承認したコマンド全体をデフォルトでプロジェクトファイルに保存すると確認されたのは、Claude Codeだけでした。
研究者は、まずファイルに記載されたことのあるすべての秘密鍵をローテーションし、その後リポジトリをクリーンアップするよう勧めています。手軽だからと「今後は確認しない」を選ぶと、秘密鍵がこのように平文の設定ファイルへ書き込まれてしまいます。
#ClaudeCode #网络安全 #AI
