Security Blog

AIコーディングアシスタントは、あなたの財布を読み取っています

#142

October 2, 2026 · By Marketing team

← All posts

AIコーディングツールは、あなたが何かを入力する前に.envファイルを読み取ります。APIキー — それぞれが利用限度額のないクレジットカードです — は、最初のプロンプトを書く前に、誰かのコンテキストウィンドウの中に入り込んでいます。問題はAIではありません。問題は、秘密情報がファイルとして存在していることです。

AIコーディングアシスタントを開いてください。1文字も入力する前に、すでにプロジェクトディレクトリを読み取っています。.envファイルを。APIキーを。データベースのパスワードを。Stripeのシークレットキーを。

あなたはそう頼んでいません。承認もしていません。これはバグではなく機能です。ツールが役に立つためにはプロジェクトのコンテキストが必要なので、開発者が読めるものはすべて読み取るのです。

そして、開発者はすべてを読むことができます。

要約版

今週、開発者の内的独白として書かれた投稿が広まりました。

> Claude Codeを開く。何かを入力する前に.envが読み取られる。APIキーがチャットの中に存在することになる。「.envを読むな」とCLAUDE.mdに追記する。効かない。

38万人がその投稿を見ました。2,700人がブックマークしました。ニュースだったからではありません。鏡だったからです。

それを読んだすべての開発者が同じことを考えました。これは自分の環境だと。

指示は機能しない

最初に試されたのは、ルールを書くことでした。「.envファイルを読まないこと。」CLAUDE.mdに、AGENTS.mdに、システムプロンプトに。直接的で明示的な禁止です。

それでもツールはファイルを読み取りました。

少し考えれば納得がいきます。ファイルはプロジェクトコンテキストの構築の一環として読み取られます。指示が処理されるより前にです。すでに読んだファイルを読むなとモデルに伝えるのは、今見たものを忘れるよう人に伝えるようなものです。情報はコンテキストウィンドウの中にあります。すでに送信済みです。指示は被害の後に到着します。

ある研究者は、ファイルレベルの拒否ルールでさえ、カスタムスクリプトやパイプチェーンによって回避可能であることを発見しました。別の研究者は、HTTP_PROXYの資格情報が自動的に読み込まれ使用されていたため、プロキシの請求額が増大していることに気づきました。

.envの中のお金

人々はこれをプライバシーの問題として捉えます。しかし、これは金銭の問題です。

本番環境の典型的な.envファイルを開いてください。

OPENAI_API_KEY=sk-...
STRIPE_SECRET_KEY=sk_live_...
AWS_ACCESS_KEY_ID=AKIA...
AWS_SECRET_ACCESS_KEY=...
DATABASE_URL=postgresql://user:pass@...

そのOpenAIキーは、利用限度額もPINもないクレジットカードです。その文字列を手にした人物は、一晩で4万ドルのAPI呼び出しを実行できます。Stripeキーは返金の処理、課金の作成、顧客の支払いデータへのアクセスが可能です。AWSの資格情報は、IAMポリシー次第ですが、それはほぼ確実に過剰な権限であり、GPUインスタンスの起動、S3バケットへのアクセス、インフラストラクチャの削除が可能になります。

これはパスワードの一覧ではありません。それぞれが異なる残高を持ち、施錠のない財布の一覧です。

歩道に置かれた2,900万の財布

GitGuardianの最新レポートによれば、2025年の公開GitHubコミットでは2,860万件の秘密情報が漏えいしました。前年比34%の増加で、同社が測定した中で最大の年間増加です。

AI固有の数値はさらに深刻です。120万件のAIサービスの秘密情報が漏えいし、前年比81%の急増でした。AIコーディングツールが共同作成したコミットでは、秘密情報の漏えい率が基準値の約2倍でした。また、MCP設定ファイル — AIエージェントを外部サービスに接続する基盤部分 — から2万4,000件の一意の秘密情報が発見されました。

漏えいが最も急増している秘密情報の種類上位15件のうち12件がAIサービスでした。データベースではありません。クラウドプロバイダーでもありません。AIサービスです。

コードをより速く書くために使っているツールが、そのコードが接続するシステムへの鍵を漏えいさせているのです。

本当の問題

その要約版スレッドを投稿した開発者は、実用的な対策で締めくくっていました。ファイル読み取りをブロックするsettings.jsonの設定です。それは機能します。現時点では、そのツールに対しては。

しかし、本当の問題はClaude CodeでもCursorでもCopilotでもありません。本当の問題は、秘密情報がファイルとして存在していることです。

.envファイルは、ディスク上に置かれた平文の文書であり、あなたのユーザーとして実行されるあらゆるプロセスが読み取ることができます。AIコーディングツール以前に、プロジェクトを読み取っていたプロセスはgit、npm、node、エディターでした。あなたは暗黙的にそれらを信頼していました。秘密情報がcatコマンド一つで漏えいする状態にあることを考えてもいませんでした。

AIコーディングツールは、暗黙のものを明示的にしただけです。他のすべてのツールと同じ方法であなたのプロジェクトを読み取ります。ただ、コンテキストをあなたが見える場所に送信するというだけです。

CIパイプラインも.envファイルを読み取ります。テストランナーも。リンターも。Dockerビルドも。いずれも許可を求めていません。発見した内容のチャット記録を見せてくれないことに気づかなかっただけです。

裏にあるパターン

2022年に漏えいした秘密情報の70%は、今日も有効です。ローテーションも失効処理もされていません。3年経った今も機能し、アクセスを許可し続けています。

これが本当の数字です。2,900万件の漏えいではありません。70%が未修正であることです。鍵をローテーションするには、それを使用しているすべてのシステムを見つけ、すべてのデプロイを更新し、すべての統合をテストする必要があります。鍵は一度作成され、.envファイルに貼り付けられ、それ以降考えられることはありませんでした。漏えいさせるコストは瞬間的です。漏えいを修正するコストは無限です。

そのため、多くの組織は修正しません。できないのです。どの鍵がどこにあり、どれが有効で、金曜の午後に機能を動かす必要があった他の開発者によって、他のマシン上の他の.envファイルにコピーされたかを把握できていないのです。

これが実際に意味すること

すべての.envファイルは賭けです。読むべきでないプロセスがそれを読み取らないという賭けです。どのツールもそれを予期しない場所に送信しないという賭けです。どの開発者も誤ってコミットしないという賭けです。

昨年、2,900万回、誰かがその賭けに負けました。公開GitHubだけでです。GitGuardianがリポジトリの35%で秘密情報を発見したプライベートリポジトリは、まだ数に入れていません。

対策はsettings.jsonのルールではありません。対策は.gitignoreのエントリではありません。対策は指示ファイルに「DO NOT READ .ENV」と大文字で書くことではありません。

対策は、そもそも秘密情報がそこに存在しないことです。ファイルの中にも。ファイルから読み込まれる環境変数にも。あなたの権限を持つプロセスが、プロセスの通常の動作 — プロジェクトディレクトリ内のファイルを読むこと — によって読み取れるいかなる形でも。

秘密情報がディスク上にあれば、それは読み取られます。問われるのは、いつ、何によって、というだけです。

---

出典