GitHubから情報漏洩する5つの経路【2026年】削除しても履歴に残る理由と今日できる対策

セキュリティ初級
GitHubセキュリティ情報漏洩サプライチェーン攻撃個人情報

TL;DR

GitHubで情報漏洩が起きる主な原因は「認証情報の窃取」か「うっかりコミット」のどちらかです。攻撃経路は5つあり、大企業でも同じ理由でやられています。

今日やること:

  1. .gitignore.env を追加する
  2. git log で機密情報がすでに履歴に入っていないか確認する
  3. GitHub Settings で不要なOAuth連携を削除する

この3つだけで、防げる事故のほとんどは防げます。


マネーフォワードのGitHub不正アクセス(2026年5月)

2026年5月1日、株式会社マネーフォワードはこう発表した。

「GitHubの認証情報が漏えいし、第三者による不正なアクセスが発生し、GitHub内のリポジトリがコピーされたことが判明しました」

最初に公表された流出可能性のある情報は、マネーフォワード ビジネスカードに関わる370件のカード保持者名とカード番号の下4桁だった。

その後の調査が続き、2026年6月23日の最終報告では流出した可能性のある件数は約6.3万件に拡大。顧客・取引先・従業員のメールアドレス、住所、固有識別子などが対象になった。銀行口座連携機能は一時停止を余儀なくされた。

原因は「個人情報が含まれたファイルが本来の管理手順から外れ、誤ってGitHub上に保管されていた」こと。

GitHubはコードだけを置く場所ではなくなっている。そこに個人情報が含まれたファイルが入った瞬間、認証情報が漏洩すれば大規模な情報流出につながる。


GitHubで情報漏洩が起きる5つの経路

経路① 認証情報の窃取→リポジトリへの不正アクセス

「リポジトリ」って何? GitHubにおけるプロジェクトの保管場所です。コード・設定ファイル・ドキュメントをまとめて入れる「フォルダ」のようなものだと思ってください。「プライベートリポジトリ」は自分(または招待したメンバー)だけが見られる非公開の保管場所です。

マネーフォワードのケースがまさにこれです。攻撃の流れはシンプルです。

  1. 何らかの方法でGitHubの認証情報(トークン・パスワード)が盗まれる
  2. 攻撃者がその認証情報でGitHub APIを呼び出す
  3. プライベートリポジトリにアクセスしてコードとファイルをコピーする

「トークン」って何? パスワードの代わりに使う長い文字列です。GitHubでは、CI/CDツールやスクリプトからGitHubを操作するために「Personal Access Token(PAT)」を発行します。このトークンが盗まれると、パスワードを知らなくてもリポジトリにフルアクセスできます。

認証情報の漏洩経路は後述する経路②〜⑤のどれかです。一度認証情報が盗まれると、そこからはプライベートリポジトリへのフルアクセスに直結します。

2022年のHeroku/Travis CI事件では、HerokuのOAuthトークンが盗まれ、そのトークンを持つユーザーのGitHubプライベートリポジトリに攻撃者がアクセスしました。GitHubの公式声明によれば、攻撃者はリポジトリのコードをダウンロードしました。


経路② サプライチェーン攻撃(開発ツール経由)

2026年5月、GitHub自身が内部リポジトリ約3,800件を侵害されました。

経緯はこうです。

  1. 攻撃グループ「TeamPCP」がTanStackのnpmパッケージに悪意あるコードを仕込む
  2. そのコードが Nx Console 18.95.0(VS Code公式拡張機能)に混入、公式マーケットプレイスに約18分間掲載される
  3. GitHubの社員がこの拡張機能をインストール
  4. 拡張機能がGitHub CLIのトークンを含む認証情報を窃取
  5. 攻撃者がそのトークンでGitHubの内部リポジトリにアクセスし、コードを持ち出した

悪意ある拡張機能が掲載されていたのは18分。それでも被害は発生しました。

問題の本質:VS Codeの拡張機能やnpmパッケージは「信頼済み」として実行されます。そこに悪意あるコードが入れば、開発者端末に保存されているすべての認証情報(GitHub・AWS・npmトークンなど)が一度に盗まれうる。


経路③ .envファイル・個人情報ファイルのうっかりコミット(最多発)

マネーフォワードの原因が「本来の管理手順から外れ誤ってGitHub上に保管されていた」こと、つまりこの経路です。

同月の2026年4月には、クラウドファンディングサービス「CAMPFIRE」もGitHub経由で約22.5万人分の個人情報流出の可能性を発表しました。

「コミット」って何? ファイルの変更を「保存した記録」として積み重ねていく操作です。git addでステージに上げてgit commitで確定させると、その時点のファイルの状態がgitの歴史として永遠に残ります。GitHubにgit pushすることで、その記録がサーバー上に公開されます。

.envって何? 環境変数(データベースの接続先・APIキー・パスワードなど)を書いておく設定ファイルです。プログラムを動かすために必要な「秘密の情報」をここにまとめておくのが慣習で、コードベースとは分離して管理するのが鉄則です。

典型的な事故のパターン:

# 本来コミットしてはいけないファイルの例
.env            # DB接続文字列・APIキー
config.json     # 各種サービスの認証情報
customer_data.csv  # 顧客情報のテストデータ
backup.sql      # DBダンプ(個人情報含む場合がある)

これらのファイルを git add . で一緒にコミットしてしまい、GitHubにpushすると即座にリポジトリに入ります。プライベートリポジトリでも、認証情報が漏洩した瞬間にすべてが見られる状態になります。

「消したのにまだ残っている」落とし穴

さらに厄介なのは、削除してもgitのコミット履歴に残り続けることです。

git rm customer_data.csv
git commit -m "誤ってコミットしたファイルを削除"

このコミットではファイルは見えなくなります。しかし、git log(コミット履歴の一覧)を辿れば、過去のコミットの中にファイルの内容が丸ごと残り続けます。GitHubのUIでも「History」から参照できてしまいます。

ファイルを消したから安心、というのは誤解です。履歴から完全に消すには専用の作業(git filter-repo等)が要ります。それより先に、APIキーや認証情報を無効化して新しいものを発行することが最優先です。

「APIキー」って何? 外部サービス(OpenAI・Stripe・SendGridなど)を自分のプログラムから呼び出すための「合言葉」です。これが盗まれると、自分のアカウントで勝手に外部サービスを呼ばれ、料金が発生したり、アカウントが停止されたりします。


経路④ パブリックリポジトリの誤設定

「プライベートにしていたつもりが、パブリックになっていた」というミスも実在します。

発生しやすい状況:

  • 個人アカウントでフォークしたときに可視性設定を間違えた
  • GitHubのOrganization設定で「デフォルトをパブリック」になっていた

「フォーク」って何? 他の人のリポジトリを自分のアカウントにコピーする操作です。オープンソースの改変や学習に使います。フォークしたリポジトリは、元のリポジトリとは別に可視性(公開・非公開)を設定できますが、ここの設定ミスが起きます。

パブリックになった瞬間、GitHubを監視しているスキャナーが自動的にコードを解析し、APIキーや個人情報を収集します。気づいてプライベートに戻しても、数分以内にデータが収集されている可能性があります


経路⑤ ツール・ブラウザ経由のゼロデイ攻撃

2026年6月3日、VS Codeのゼロデイ脆弱性が公開されました。

細工したリンクをクリックさせるだけでGitHubのOAuthトークンが盗まれるという内容で、研究者のAmmar Askarが発見・公開しました。このトークンは「クリックした特定のリポジトリだけ」でなく、そのユーザーがアクセスできるすべてのリポジトリへの操作権を持っています。

“The token is not scoped to the particular repo you interacted with, meaning it has full access to every other repo that you have access to.”

パッチはまだ提供されていない(2026年6月時点)。


2026年の主要インシデントまとめ

時期対象規模主な経路
2026年4月CAMPFIRE(日本)約22.5万人誤ったコミット
2026年5月マネーフォワード(日本)約6.3万件誤ったコミット→認証情報漏洩
2026年5月GitHub(自社内部)約3,800リポジトリサプライチェーン(悪意ある拡張機能)

今すぐできる3つの対策

① 不要なOAuth連携を削除する

GitHub Settings → Applications で、使っていないCIツール・デプロイツールの連携を今すぐ削除します。Herokuやかつて使ったCI/CDツールが残っていることが多いです。

「OAuth連携」って何? 「GitHubでログイン」したサービスに、GitHubへの操作権限を渡す仕組みです。使わなくなったサービスの権限が残っていると、そのサービスが侵害されたとき自分のリポジトリまで巻き込まれます。

.gitignore に機密ファイルを追加する

# .gitignore に必ず入れる
.env
.env.local
.env.*.local
*.csv        # テストデータを除外する場合
config/secrets.yml

.gitignoreって何? gitの管理対象から外すファイルのリストです。ここに書いたファイルはgit add .をしても自動的に無視されます。プロジェクト作成時に最初に設定するのが鉄則です。

プロジェクト作成時に設定しておくのが鉄則。既存のプロジェクトも今すぐ確認してください。

③ すでにコミットしていないか確認する

# .env がgit履歴に入っていないか確認
git log --all --full-history -- "**/.env"

# 特定の文字列(メールアドレスなど)が履歴に含まれていないか
git log -S "gmail.com" --all

過去のコミット履歴に機密情報が含まれていた場合は、ファイルを削除するより先にAPIキーや認証情報を無効化して新しいキーを発行することが最優先です。履歴から消す作業は後でできます。盗まれた情報を使った攻撃は今すぐ始まりうる。


まとめ

マネーフォワードの事件が示すのは「悪意ある攻撃者に狙われた大企業の話」ではないということです。

「本来入れてはいけないファイルが誤ってGitHubに入った」 + 「認証情報が漏洩した」、この2つが重なれば、サービス規模に関係なく同じ事態が起きます。

GitHubで何が起きているかを知り、.gitignore の設定とOAuth連携の棚卸しを今日やる。それだけで、防げる事故のほとんどは防げます。

関連記事

セキュリティセキュリティ、どこまでやれば十分? 会社の規模で決める「合格ライン」の引き方セキュリティGitHubに秘密情報を誤プッシュした:3時間以内の対処フローチャートセキュリティSSH鍵管理の崩壊パターンと修復手順:散乱した鍵を棚卸しして統制する
記事一覧に戻る