2025年末、人気のnpmパッケージに悪意あるコードが混入され、世界中で15万以上のプロジェクトに影響を与えるインシデントが発生しました。サプライチェーン攻撃は、直接攻撃するよりも「信頼された経路」を通じて侵入する、最も検出が困難な攻撃手法の一つです。
2025-2026年の主要インシデント
OSSパッケージ汚染 - **npmパッケージ乗っ取り**:メンテナーのアカウント侵害経由で悪意あるバージョンを公開 - **PyPIタイポスクワッティング**:正規パッケージに似た名前で悪意あるパッケージを公開(requests → requsets等) - **依存関係混同攻撃**:社内パッケージと同名のパッケージを公開リポジトリに登録
CI/CDパイプライン侵害 - **GitHub Actions**のサードパーティアクション経由でシークレット漏洩 - **ビルドサーバー**の侵害によるバイナリへのバックドア注入 - **コンテナイメージ**のベースイメージ改ざん
SaaS連携の悪用 - **OAuth連携**の過剰な権限を悪用した情報窃取 - **API連携**経由での横移動 - **SSO プロバイダー**の侵害による一括アクセス
開発者向け防御策
依存関係の管理 - [ ] **lockfile**(package-lock.json、Pipfile.lock)を必ずコミットする - [ ] **依存関係の監査**を定期実行(npm audit、pip-audit) - [ ] **Dependabot / Renovate**で脆弱性アラートを有効化 - [ ] 新規パッケージ追加時は**ダウンロード数・メンテナー・最終更新日**を確認 - [ ] **プライベートレジストリ**で社内パッケージを管理
CI/CDの堅牢化 - [ ] GitHub Actionsのサードパーティアクションは**SHA固定**で参照 - [ ] シークレットは**最小権限**で設定 - [ ] ビルド成果物の**署名と検証**(Sigstore/cosign) - [ ] **SLSA(Supply-chain Levels for Software Artifacts)**フレームワークの導入 - [ ] セルフホストランナーの**使い捨て化**
コンテナセキュリティ - [ ] ベースイメージは**公式かつ特定バージョン**を指定(latest禁止) - [ ] **マルチステージビルド**で攻撃面を最小化 - [ ] **イメージスキャン**(Trivy、Snyk)をCIパイプラインに組み込む - [ ] **distroless**または**scratch**ベースイメージの検討
組織的対策
SBOM(Software Bill of Materials)の導入
ソフトウェアの「部品表」であるSBOMは、使用しているOSSコンポーネントを可視化します。
- SPDXまたはCycloneDX形式で生成
- 脆弱性データベース(NVD、OSV)と照合
- 定期的な更新と監査
ゼロトラスト・サプライチェーン
- 全てのコードレビューに最低2名の承認を必須化
- 署名付きコミット(GPG / SSH署名)の義務化
- プロダクション環境へのデプロイ承認フロー
この記事のポイント
- サプライチェーン攻撃は「信頼された経路」を悪用する最も検出困難な攻撃
- 依存パッケージのlockfile固定とSHA固定が基本中の基本
- CI/CDパイプラインはシークレットの最小権限化とアクションの固定化
- SBOMでソフトウェアの構成要素を可視化・管理する
- 「信頼するが検証する」から「常に検証する」へのマインドシフトが必要
#サプライチェーン攻撃#OSS#CI/CD#SBOM#DevSecOps