2週間で4つのOSSプロジェクトが陥落
2026年3月19日から31日までのわずか2週間で、OSSエコシステムを揺るがす連鎖的なサプライチェーン攻撃が発生しました。セキュリティ研究者が「TeamPCPキャンペーン」と呼ぶこの一連の攻撃は、GitHub Actions → PyPI → npm と横展開し、4つの主要プロジェクトを侵害しています。
| 日付 | 対象 | エコシステム | 手法 |
|---|---|---|---|
| 3/19 | Trivy(脆弱性スキャナー) | GitHub Actions | GitHub Actionのバックドア化 |
| 3/23 | KICS(IaCスキャナー) | GitHub Actions | 同上 |
| 3/24 | LiteLLM v1.82.7/1.82.8 | PyPI | Trivy経由で窃取したPyPI認証情報を使用 |
| 3/27 | Telnyx | PyPI | 同手法 |
| 3/31 | Axios v1.14.1/v0.30.4 | npm | メンテナーアカウント乗っ取り |
Axios事件 — 週間1億DLのパッケージが約3時間汚染
何が起きたか
3月31日、Axiosのメンテナーのnpmアカウントが乗っ取られ、39分間で2つの悪意あるバージョンが公開されました。
- v1.14.1 と v0.30.4 に悪意ある依存パッケージ
plain-crypto-jsが追加 postinstallフックでクロスプラットフォームRAT(Remote Access Trojan)をダウンロード・実行- 約2〜3時間で検知・削除されたが、その間にインストールされたプロジェクトは影響を受けた可能性
Google Threat Intelligenceは、この攻撃を北朝鮮関連グループ UNC1069(Microsoftは Sapphire Sleet として追跡)に帰属しています。
なぜ危険だったか
Axiosは週間約1億ダウンロードを誇るHTTPクライアントライブラリです。npm install や CI/CD の自動ビルド時に postinstall スクリプトが実行されるため、インストールしただけでマルウェアが実行される仕組みでした。
LiteLLM事件 — CI/CDパイプラインを経由した連鎖攻撃
攻撃の流れ
LiteLLMの攻撃は、先にバックドア化されたTrivyのGitHub Actionを起点とする連鎖攻撃でした。
- Trivy GitHub Action のソースコードにバックドアが仕込まれる
- LiteLLMのCI/CDパイプラインがTrivyを使用していたため、PyPI認証情報が漏洩
- 攻撃者が窃取した認証情報でPyPIに悪意あるバージョンを公開
litellm_init.pthという.pthファイルが含まれ、Pythonプロセス起動時に自動実行
.pth ファイルはPythonのサイトパッケージディレクトリに配置されると、インポート操作なしに自動実行される仕組みで、検知が困難でした。日間約340万ダウンロードのパッケージが約40分間汚染されています。
統計が示す危機的状況
Sonatypeの2026年レポートによると、OSSサプライチェーン攻撃は急拡大しています。
- OSSマルウェアパッケージ数: 前年比 +75%(累計123.3万件)
- 2025年だけで 454,648件 の新規悪意パッケージを検出
- OSSダウンロード総数: 9.8兆回/年(前年比+67%)
- NVDでCVSSスコア未付与のCVEが 65%
今すぐ実施すべき防御策
1. .npmrc の強化
# postinstall等のライフサイクルスクリプトを無効化
# → Axiosの攻撃を直接防げた設定
ignore-scripts=true
# バージョン範囲ではなく固定バージョンで保存
save-exact=true
# 公開後7日未満のバージョンをブロック
# → 数時間の攻撃ウィンドウを完全排除
min-release-age=7
ignore-scripts=true は最も効果的な防御策の1つです。postinstall を無効化することで、Axios事件のようなスクリプト実行型の攻撃を根本的にブロックできます。
2. CI/CDの強化
npm ciを必ず使用:package-lock.jsonに記載されたバージョンのみインストール- GitHub ActionsのSHAピニング: タグ指定(
@v4)ではなくコミットSHA(@abc123...)でアクションを固定 - PyPIへの公開はOIDC Trusted Publisher + 2FA必須に設定
# 危険な例
- uses: aquasecurity/trivy-action@latest
# 安全な例(SHAピニング)
- uses: aquasecurity/trivy-action@abc1234567890abcdef
3. pip側の対策
# ハッシュ検証を強制
pip install --require-hashes -r requirements.txt
# 既知の脆弱性をチェック
pip-audit
4. モニタリングツールの導入
- Socket.dev: パッケージの振る舞いを静的・動的に分析し、CVEデータベースに登録されていないゼロデイ攻撃も検出
- npm audit signatures: npmパッケージの署名を検証
- Dependabot / Renovate: 依存関係の自動更新で古いバージョンに留まるリスクを低減
まとめ — 「信頼」から「検証」への転換
2026年のサプライチェーン攻撃は、OSSの「信頼モデル」に根本的な疑問を投げかけています。
npm installは安全ではない —ignore-scripts=trueをデフォルトにする- CI/CDは攻撃の起点になる — 外部アクションはSHAピニングで固定する
- 数時間の攻撃ウィンドウが存在する —
min-release-ageで新規リリースをバッファリングする
「とりあえずインストール」の時代は終わりました。防御策はどれも設定ファイルの数行で実装できるものばかりです。今すぐプロジェクトの .npmrc を確認してみてください。
Webサイト全般のセキュリティ対策についてはWebサイトのセキュリティ対策入門も参照してください。