「あなたのAPIキーはもう盗まれています」公開リポジトリに囮キーを撒いたら5分で発火した話
公開GitHubリポジトリにAPIキーを置いて5分で盗まれた。これが実験結果だ。やったことはシンプル。無害な囮キー(Canarytoken)を .env ファイルに入れわざと .gitignore から外し、公開リポジトリに push した。見かけ上は「個人開発者がうっかりミスした」ようなハニーポット。スターは0、誰も見ていないはずのリポジトリだ。ところが数分後、そのキーが実際に叩かれた。犯人は人間ではなく自動スキャナ。GitHubの新規コミットを24時間監視し、APIキーらしき文字列を見つけたら即座に試す機械が、世界中で常時動いている。
ここが AIの鬼として引っかかるのは、開発者たちが心の奥底で持っている「でも小規模だから」という幻想だ。スターが0なら、個人プロジェクトなら、見つかるのは何日も先だろう。その感覚は完全に通用しない。公開した瞬間、スケール無視で機械が見ている。しかも攻撃者にとってこのスキャンはコストがほぼゼロ。やらない理由がない。秘密を置く場所を「コード内」「ハードコード」から「環境変数」「.gitignore」へ移すこと。そこは対策の第一歩だ。だが読んでほしい実験の第2部も、問題はそこで終わらない。一度公開リポジトリに出たキーは、Git履歴に永遠に残る。ファイルを消しても過去のコミットには生きている。だからファイルを削除することより先に、そのAPIキーそのものを無効化(ローテート)するしかない。キー管理の本気度は「秘密を隠すレイヤーをいくつ積むか」で決まる。環境変数に入れて .gitignore で除外するだけでなく、さらに一段踏み込んで Claude Code などのAIツール自体に .env への読み取り権限を与えない設定も理想だ。開発スピードは落ちるが、「秘密をコンテキストに漏らさない」という最後の砦ができる。
明日からのアクション:秘密をハードコードするな、環境変数に入れて .gitignore で除外しろ。そしていますぐリポジトリの git log を見て「.env が公開されていないか」を確認しろ。されていたなら、該当するすべてのAPIキーをローテーションしろ。コーヒーを淹れている間に盗まれる。それが現代だ。
※ 上記は配信元記事をもとにAIの鬼編集部が要約・再構成したものです。正確な内容は出典元をご確認ください。
このニュースの全文は、配信元でお読みいただけます。 Zenn AIで元記事を読む →