npmにまつわるサプライチェーン攻撃の対策
original: /kawasima/サプライチェーン攻撃の対策
npm特化の即効対策(上位5つ)
1. 新規リリースのクールダウン — .npmrcにmin-release-age=7d
2. installスクリプト無効化 — npm config set ignore-scripts true(またはpnpm/Bunのデフォルトを活用)
3. npm ciの徹底とlockfile-lint — CIでnpm ci + lockfile-lintをpre-step
4. npm audit signatures — 各ビルドでprovenance/署名検証
5. Trusted Publishing + trustPolicy: no-downgrade(pnpm) — publishをOIDC化、downgrade拒否
table:table
原則 防止する攻撃 導入コスト
バージョン完全固定+lockfile厳格化 悪意あるバージョンへの自動解決、lockfileドリフト 低
リリース経過時間の猶予(クールダウン) 攻撃ウィンドウ中のインストール 低
installスクリプト/ビルド時任意コードの無効化または限定許可 install時の任意コード実行 低〜中
署名・Provenance検証(レジストリ・コンテナ・CI出力) 信頼ワークフロー外からのpublish 低
事前監査ツール(脆弱性・悪性・新規依存) 既知の悪性、postinstallパターン 低
長期トークンの排除(OIDC Trusted Publishing / 短命credentials) アカウント乗っ取りからの二次被害 中
プライベートレジストリプロキシ Dependency Confusion、大規模侵害時の即時遮断 中
実行環境サンドボックス(Dev Container / ephemeral runner) ホストマシン・AI認証情報への横展開 中
egress制御 + SBOM + インシデントランブック 侵害後の能動的搾取、ブラストレイディアス拡大 中〜高
version指定をlatestにするのはやめたほうがよい理由