GitHub 3800リポジトリ侵害:5つの攻撃ベクトルで理解する2026年サプライチェーン攻撃の実態と防御策

2026年5月20日、GitHubは従業員のデバイスが悪意あるVS Code拡張機能によって侵害され、約3,800の内部リポジトリが流出したことを公表した。攻撃者TeamPCPは盗んだソースコードを$50,000で販売中で、買い手がなければ無料公開すると脅迫している。 しかし、この事件は単なる「VS Code拡張機能による侵害」ではない。同時期に発生した4つの関連攻撃を合わせると、5つの攻撃ベクトルが連鎖する未曾有のサプライチェーン攻撃の全体像が見えてくる。本記事では、各ベクトルの技術的詳細と、開発者が今すぐ実践すべき防御策を解説する。 事件の全体像:5つの攻撃ベクトル 2026年5月18日から20日にかけて、TeamPCP(Google Threat IntelligenceがUNC6780として追跡)は、以下の5つの攻撃ベクトルを連続して展開した。 ベクトル1:Nx Console VS Code拡張機能侵害(5月18日) 悪意あるバージョンのNx Console(nrwl.angular-console v18.95.0、2.2Mインストール)がVS Code Marketplaceに公開された。わずか11分間で削除されたが、その間に拡張機能をインストールした開発者のGitHubトークン、npmトークン、AWS認証情報、HashiCorp Vault認証情報、Kubernetes認証情報、1Passwordの認証情報が窃取された。 特筆すべきは、この拡張機能がClaude Codeの設定ファイル(~/.claude/settings.json) を標的にしていた点だ。AIエージェントのAPIキーが平文で保存されている設定ファイルが、新たな攻撃対象となっている。 // 悪意ある拡張機能の概念(実際のペイロードは難読化) const vscode = require('vscode'); const fs = require('fs'); const { execSync } = require('child_process'); function activate(context) { // AIエージェント設定ファイルの収集 const targets = [ '~/.claude/settings.json', '~/.cursor/config.json', '~/.config/openclaw/credentials.json', ]; targets.forEach(p => { if (fs.existsSync(p)) { const data = fs.readFileSync(p, 'utf8'); exfiltrate(data); } }); // 環境変数から全トークンを抽出 const tokens = { ...process.env }; exfiltrate(JSON.stringify(tokens)); } ベクトル2:Mini Shai-Huludワームによるnpmサプライチェーン攻撃(5月19日) TeamPCPはMini Shai-Huludワームの新たな波をnpmエコシステムに解き放った。639の悪意あるnpmパッケージバージョンが323パッケージにわたって公開された。標的となったのはAlibabaの@antvエコシステム(週間約1,600万ダウンロード)で、jest-canvas-mock(1,000万+月間DL)、size-sensorなどの休眠パッケージが乗っ取られた。 この波の最大の特徴は、Sigstoreのビルド証明書(provenance)を実行時に偽造する新手法だ。ワームがFulcioとRekorを実行時に呼び出し、悪意あるパッケージに対して正当なSigstore署名証明書を生成する。証明書バッジはグリーン表示されるが、ビルドチェーン自体は攻撃者に支配されている。Endor LabsのPeyton Kennedyは「証明書はパッケージがどこでビルドされたかを示す。ビルドが承認されたかどうかは示さない」と指摘する。 2種類の配送メカニズム Type 1 — ファントムコミットドロッパー: jest-canvas-mockやsize-sensorなどの休眠パッケージに、optionalDependenciesエントリを1行追加するだけの手法。npmがgithub:依存関係を解決する際、prepareライフサイクルフックが発火し、Bunランタイムで難読化されたペイロードを実行する。 ...

May 22, 2026 · 25 min · 4835 words · Appwright