IT連携マップシステムどうしのデータ連携・接続仕様のまとめ

4 分で読む

API キーとは何かでは、キーを持っている相手はその API でできることを全部できると見ました。では、その鍵はどこから漏れるのでしょうか。

公開されている報告と事例、私たちのサイトに届いたアクセスの記録から、漏れる経路を 7 つに分けました。


まず、言葉をそろえる

言葉 意味
鍵 システムが「使ってよい相手か」を確かめるための、秘密の文字列。パスワード、API キー、アクセストークンなどがある。ここでは、これらをまとめて「鍵」と呼ぶ
API キー 鍵の一種。プログラムが別のシステムの API を呼ぶときに、自分が誰かを示すために送る文字列。API キーを持っている人は、持ち主と同じ操作ができる
リポジトリ GitHub などの上の、開発ごとのコードの置き場所。公開にすると、誰でも読める
コミット コードの変更を、1 回分の記録として残すこと。後で消した行も、前の記録には残る
.env API キーやパスワードなど、秘密の設定を書いておくファイル
.git コードの変更の記録が入ったフォルダ。過去の記録も丸ごと入っている
コンテナイメージ アプリを動かすための部品一式を、1 つにまとめて配る形
ログ プログラムが動いた記録。動作を確かめるために書き出す
MCP AI に外のサービスや道具をつなぐための決まり

漏れる経路は 7 つ

API キーが漏れる 7 つの経路を、漏れる場所で 3 つに分けて、アイコンつきで並べた図。サーバーや公開の置き場から 3 つ(①公開リポジトリ、②Web サイトの公開フォルダ、③配るパッケージやコンテナイメージ)、AI から 3 つ(④ログと AI の会話の記録、⑤AI の道具と MCP の設定ファイル、⑥AI の学習に使われる公開データ)、利用者の画面(ブラウザ)から 1 つ(⑦公開してよかった鍵の権限変更)
API キーが漏れる 7 つの経路を、漏れる場所で 3 つに分けて、アイコンつきで並べた図。サーバーや公開の置き場から 3 つ(①公開リポジトリ、②Web サイトの公開フォルダ、③配るパッケージやコンテナイメージ)、AI から 3 つ(④ログと AI の会話の記録、⑤AI の道具と MCP の設定ファイル、⑥AI の学習に使われる公開データ)、利用者の画面(ブラウザ)から 1 つ(⑦公開してよかった鍵の権限変更)

漏れる場所で分けると、サーバーや公開の置き場が 3 つ、AI が 3 つ、利用者の画面(ブラウザ)が 1 つです。どれも、鍵を置いた場所が思ったより広く見えていた、というもので、悪意より置き場所の取り違えから起きます。

公開リポジトリは、件数が最も多い

何が 分かっていること
公開 GitHub のコミット 2025 年の 1 年で、新しく置かれた鍵は 2,865 万件。前年より 34% 増えた
GitGuardian(State of Secrets Sprawl 2026)原文
28.65 million new hardcoded secrets were added to public GitHub commits in 2025 alone, a 34% increase year over year and the largest single-year jump we’ve recorded.

出典を開く確認 2026-10-04

トヨタ自動車(2022 年) 委託先が公開したプログラムの文章(ソースコード)に、データサーバーへのアクセスキーが入っていた。
トヨタ自動車(お客様のメールアドレス等の漏洩可能性に関するお詫びとお知らせについて・2022-10-07)原文
公開されていたソースコードには、データサーバーへのアクセスキーが含まれており

出典を開く確認 2026-10-04

約 5 年、第三者が見られる状態だった
トヨタ自動車(お客様のメールアドレス等の漏洩可能性に関するお詫びとお知らせについて・2022-10-07)原文
2017年12月~2022年9月15日まで、第三者がGitHub上にあるソースコードの一部にアクセス可能な状態になっていたことが判明致しました。

出典を開く確認 2026-10-04

設定ファイルに書いたまま公開する、サンプルに本物の鍵を入れたまま共有する、といった手違いで起きます。

Web サイトの公開フォルダは、常に探されている

公開フォルダの .env が読まれる仕組みを比べた図。探す側は「/.env」「/ci/.env」など、ありそうな名前と置き場所を順に要求する。.env を公開フォルダに置いていないサイトは「見つからない」と返し、何も漏れない(IT連携マップのサイトは、中身を返した要求が 0 件)。置いてしまったサイトは、ファイルの中身がそのまま返り、書いてあった API キーやパスワードが持ち去られる
公開フォルダの .env が読まれる仕組みを比べた図。探す側は「/.env」「/ci/.env」など、ありそうな名前と置き場所を順に要求する。.env を公開フォルダに置いていないサイトは「見つからない」と返し、何も漏れない(IT連携マップのサイトは、中身を返した要求が 0 件)。置いてしまったサイトは、ファイルの中身がそのまま返り、書いてあった API キーやパスワードが持ち去られる

公開フォルダは、Web サイトとして誰でも読める場所です。そこに .env を置くと、名前を当てられただけで中身が返ります。探す側は、ファイルの名前と置き場所の候補を順に試します。

届いた要求の内訳

IT連携マップのサイトに 22 日分の記録で届いた、攻撃の形の要求 8,219 件の内訳の円グラフ。.env を探す要求 1,566 件(19.1%)、.git を探す要求 108 件(1.3%)、それ以外 6,545 件(79.6%)。.env と .git は日ごとに多かった場所だけを数えた少なめの数で、中身を返したものは 0 件
IT連携マップのサイトに 22 日分の記録で届いた、攻撃の形の要求 8,219 件の内訳の円グラフ。.env を探す要求 1,566 件(19.1%)、.git を探す要求 108 件(1.3%)、それ以外 6,545 件(79.6%)。.env と .git は日ごとに多かった場所だけを数えた少なめの数で、中身を返したものは 0 件

私たちのサイトに 22 日分の記録で届いた、攻撃に使われる形の要求 8,219 件のうち、.env を探す要求は 1,566 件以上、.git を探す要求も 108 件以上ありました。多かったのは /.env(120 件)と /ci/.env(84 件)です。中身を返したものは 0 件でした。守り方の順番は .env の名前を変えれば安全か にまとめてあります。

配るものと記録に、鍵が紛れ込む

経路 起きたこと
コンテナイメージ 公開していた Docker イメージの途中の層から、クラウドの鍵が抜き取られた(Codecov)
Codecov(April 2021 Post-Mortem)原文
The attacker was able to extract an HMAC key for a Google Cloud Storage service account from an intermediate layer in our public Codecov Self-Hosted Docker image.

出典を開く確認 2026-10-04

AI エージェントのログ AI エージェントの部品の弱点(脆弱性)の 73.5% は、動作を確かめるための出力(デバッグの出力)が AI の会話に流れ込むことが原因だった
Chen et al.(arXiv 2604.03070・2026-04-03)原文
debug logging accounts for 73.5% of vulnerabilities because agent frameworks feed stdout into the LLM context window

出典を開く確認 2026-10-04

ログや AI の会話の記録は、手元に残ります。AI の道具がどこに記録を残すかは AI エージェントに鍵を渡しても大丈夫か にまとめてあります。

AI の設定と学習データにも残る

公開 GitHub の MCP の設定ファイルから見つかった鍵 2 万 4,008 件の円グラフ。まだ使えた鍵は 2,117 件(8.8%)、使えると確かめられなかった鍵は 21,891 件(91.2%)(GitGuardian)
公開 GitHub の MCP の設定ファイルから見つかった鍵 2 万 4,008 件の円グラフ。まだ使えた鍵は 2,117 件(8.8%)、使えると確かめられなかった鍵は 21,891 件(91.2%)(GitGuardian)
どこに 見つかった鍵
公開 GitHub の MCP の設定ファイル 2 万 4,008 件。うち 2,117 件はまだ使えた
GitGuardian(State of Secrets Sprawl 2026)原文
we identified 24,008 unique secrets exposed in MCP-related configuration files across public GitHub, including 2,117 unique valid credentials.

出典を開く確認 2026-10-04

Web の公開データ(AI の学習にも使われる) まだ使える鍵が 1 万 1,908 件
Truffle Security(2025-02-27)原文
11,908 Live Secrets were detected using TruffleHog in 400TB of web data.

出典を開く確認 2026-10-04

AI の学習に使われる公開リポジトリ まだ使える鍵が 54 万 3,699 件
Truffle Security(2026-10-01)原文
we found 543,699 credentials that still authenticated.

出典を開く確認 2026-10-04

MCP の設定ファイルから見つかった鍵のうち、まだ使えたのは 1 割弱でしたが、それでも 2,117 件です。一度公開されて集められたデータからは、元のリポジトリを消しても鍵は消えません。

公開してよかった鍵の権限変更

公開してよかった鍵の権限変更を、前と後で比べた図。鍵の文字列は同じまま、その鍵で使える API が増え、漏らしてはいけない鍵に変わる。前: Web ページに載せた地図の表示用の鍵。使える API は地図の表示だけで、Gemini は無効。拾われても、使えるのは地図の表示だけ。変化: 同じプロジェクトで、別の担当者が Gemini の API を有効にした(鍵の持ち主には知らせが来ない)。後: 同じ鍵で、地図の表示と Gemini の両方が使える。ページから鍵を拾った人が、アップロードされたファイルや保存されたデータを見たり、AI の利用料を持ち主に請求させたりできる。先にすること: 使える API(地図の表示だけ)と、使えるサイトを鍵に設定しておく。Truffle Security は、この状態の Google の鍵を 2,863 件見つけた
公開してよかった鍵の権限変更を、前と後で比べた図。鍵の文字列は同じまま、その鍵で使える API が増え、漏らしてはいけない鍵に変わる。前: Web ページに載せた地図の表示用の鍵。使える API は地図の表示だけで、Gemini は無効。拾われても、使えるのは地図の表示だけ。変化: 同じプロジェクトで、別の担当者が Gemini の API を有効にした(鍵の持ち主には知らせが来ない)。後: 同じ鍵で、地図の表示と Gemini の両方が使える。ページから鍵を拾った人が、アップロードされたファイルや保存されたデータを見たり、AI の利用料を持ち主に請求させたりできる。先にすること: 使える API(地図の表示だけ)と、使えるサイトを鍵に設定しておく。Truffle Security は、この状態の Google の鍵を 2,863 件見つけた
何が 起きたこと
きっかけ 地図の表示用の鍵と同じプロジェクトで、Gemini の API が有効になる。
Truffle Security(2026-02-25)原文
The Gemini API gets enabled on the same project.

出典を開く確認 2026-10-04

鍵の持ち主には、鍵の権限が変わったことが知らされない
Truffle Security(2026-02-25)原文
The developer is never warned that the keys' privileges changed underneath it.

出典を開く確認 2026-10-04

地図の表示などのために公開していた Google の鍵 2,863 件が、生成 AI の Gemini にも使える状態だった
Truffle Security(2026-02-25)原文
We identified 2,863 live Google API keys vulnerable to this privilege-escalation vector.

出典を開く確認 2026-10-04

その鍵でできること アップロードされたファイルを見たり、AI の利用料を持ち主に請求させたりできる
Truffle Security(2026-02-25)原文
With a valid key, an attacker can access uploaded files, cached data, and charge LLM-usage to your account.

出典を開く確認 2026-10-04

Web ページに載せる前提の鍵でも、同じ鍵に別の API が有効になると、漏らしてはいけない鍵に変わります。

経路ごとに、先に塞ぐところ

API キーが漏れる 7 つの経路ごとに、漏れ方と先にすることを並べた図。①公開リポジトリ: コードや設定ファイルに鍵を書いたまま公開する、サンプルに本物の鍵を入れたまま共有する → 漏れた鍵を取り消す、プッシュ保護とシークレットスキャンも使う。②Web サイトの公開フォルダ: .env や .git を誰でも読める場所に置き、名前を当てられて中身を読まれる → .env や .git を公開フォルダに置かない。③配るパッケージ・コンテナイメージ: 公開した Docker イメージの途中の層から鍵が抜き取られた(Codecov)→ 配る前に、途中の層まで含めて鍵が無いかを確かめる。④ログと AI の会話の記録: 動作を確かめるための出力が AI の会話に流れ込み、手元の記録に残る → 鍵を出力させない、AI に .env の中身を表示させない。⑤AI の道具と MCP の設定ファイル: 設定ファイルに鍵を直接書いたまま、ファイルごと公開する → 設定ファイルを公開しない、権限を絞った鍵を使う。⑥AI の学習に使われる公開データ: 一度集められたデータに鍵が残り、元のリポジトリを消しても消えない → 漏れた鍵を取り消す。⑦公開してよかった鍵の権限変更: 同じプロジェクトで別の API が有効になり、公開していた鍵で生成 AI まで使えるようになる → 使える API と、使えるサイトを絞っておく。鍵が漏れたら、どの経路でも、まず漏れた鍵を取り消す。コードやファイルから鍵を消しても、鍵は使えるまま
API キーが漏れる 7 つの経路ごとに、漏れ方と先にすることを並べた図。①公開リポジトリ: コードや設定ファイルに鍵を書いたまま公開する、サンプルに本物の鍵を入れたまま共有する → 漏れた鍵を取り消す、プッシュ保護とシークレットスキャンも使う。②Web サイトの公開フォルダ: .env や .git を誰でも読める場所に置き、名前を当てられて中身を読まれる → .env や .git を公開フォルダに置かない。③配るパッケージ・コンテナイメージ: 公開した Docker イメージの途中の層から鍵が抜き取られた(Codecov)→ 配る前に、途中の層まで含めて鍵が無いかを確かめる。④ログと AI の会話の記録: 動作を確かめるための出力が AI の会話に流れ込み、手元の記録に残る → 鍵を出力させない、AI に .env の中身を表示させない。⑤AI の道具と MCP の設定ファイル: 設定ファイルに鍵を直接書いたまま、ファイルごと公開する → 設定ファイルを公開しない、権限を絞った鍵を使う。⑥AI の学習に使われる公開データ: 一度集められたデータに鍵が残り、元のリポジトリを消しても消えない → 漏れた鍵を取り消す。⑦公開してよかった鍵の権限変更: 同じプロジェクトで別の API が有効になり、公開していた鍵で生成 AI まで使えるようになる → 使える API と、使えるサイトを絞っておく。鍵が漏れたら、どの経路でも、まず漏れた鍵を取り消す。コードやファイルから鍵を消しても、鍵は使えるまま
経路 先にすること
公開リポジトリ 漏れた鍵を取り消す。プッシュ保護とシークレットスキャンも使う(シークレットスキャンとは)
Web サイトの公開フォルダ .env や .git を公開フォルダに置かない
パッケージとイメージ 配る前に、途中の層まで含めて鍵が無いかを確かめる
ログと AI の会話 鍵を出力させない。AI に .env を表示させない
AI の設定と MCP 設定ファイルを公開しない。権限を絞った鍵を使う
学習データ 漏れた鍵を取り消す
公開してよかった鍵の権限変更 使う API と、使えるサイトを絞っておく

ここから先は調査の詳細です(約 2 分)。上のカードだけで決められます。調べた 1 件ずつの記録は IT連携マップ に、出典 URL と調査日つきで公開しています。

調査の詳細

経路は、GitGuardian の年次報告(State of Secrets Sprawl 2026)、Truffle Security の 3 本の調査、Codecov の事後報告、AI エージェントの部品を調べた論文(arXiv 2604.03070)、トヨタ自動車の発表をもとに分けました。調べた範囲は、これらの公開された報告と事例、私たちのサイトに届いた要求の記録(2026 年 9 月 8 日〜10 月 4 日の 22 日分)です。引用はすべて、保存した原本に原文のまま在ることを確かめています。

私たちのサイトに届いた要求

2026 年 9 月 8 日から 10 月 4 日までに記録した 22 日分(1 日はその前の 24 時間)を、Cloudflare の統計から数えました。外から届いた、攻撃に使われる形の要求は 8,219 件で、中身を返したもの(成功の応答)は 0 件です。記録しているのは日ごとに多かった場所だけなので、.env を探す要求の 1,566 件と .git を探す要求の 108 件は、少なく見積もった数です。

狙われた場所(多い順) 件数
/.env 120 件
/ci/.env 84 件
/kafka/.env 82 件
/travis/.env 78 件
/sitemaps/.env 77 件
/elasticsearch/.env 74 件
/mail/.env 72 件
/.git/HEAD 69 件
/v3/.env 64 件
/job/.env 56 件

言えないこと

  • 件数の多くは、報告した会社が自社の方法で数えたものです。私たちは数え方を検証していません
  • 公開されていないリポジトリや、社内の機械に置かれた鍵は、どの報告にも入っていません。GitGuardian は、開発者の手元の機械が鍵を盗む主な標的になってきたと書いています
    GitGuardian(State of Secrets Sprawl 2026・報告の紹介ページ)原文
    Developer workstations are now a prime target for secrets theft

    出典を開く確認 2026-10-04

  • 私たちのサイトの数は 1 つのサイトの記録で、ほかのサイトに同じだけ届くとは限りません

← 調査記事の一覧へ 比較する

「API キーはどこから漏れるのか — 7 つの経路」について、分からないところを聞いてください
この画面のヒント
「API キーはどこから漏れるのか — 7 つの経路」について、分からないところを聞いてください
編集部はベンダーからの掲載料・送客料・成果報酬を一切受け取りません。判定は編集部の調査記録にある一次資料から、機械で組み立てています。 チャット(HINT)の相談内容の扱いはプライバシーポリシーに書いています。
一覧: システム一覧 連携ツール(連携サービス)一覧 AI・自動化ツール一覧 稼働状況・障害情報
記載の誤り・掲載についてのご連絡 → 訂正・掲載のご依頼(無料・無条件・全社同一) 運営者情報