Secure Steady
サプライチェーン攻撃 の使い方・オプション・サンプル

サプライチェーン攻撃 - サプライチェーン攻撃

パッケージマネージャーやビルドパイプラインを経由した攻撃。依存関係の汚染、タイポスクワッティング、依存関係かく乱を解説。

概念図

サプライチェーン攻撃 diagram

攻撃シナリオ

タイポスクワッティングの例(npm)

bash
# 正規パッケージ
npm install lodash

# 攻撃者が公開した偽パッケージ(タイポ)
npm install lodahs   # ← 文字入れ替え
npm install lodashs  # ← 余分な文字

依存関係かく乱の例

bash
# 社内レジストリに internal-utils@1.0.0 がある場合
# 攻撃者が公開レジストリに internal-utils@99.0.0 を公開
# → パッケージマネージャーがバージョンの高い公開版を優先してインストール

攻撃手法の種類

手法 概要 実例
タイポスクワッティング 正規パッケージと似た名前の悪意あるパッケージを公開 crossenvcross-env の偽物)
依存関係かく乱 社内パッケージ名と同名のパッケージを公開レジストリに公開し、バージョンの高い方を優先インストールさせる 2021年 Alex Birsan の研究で Apple・Microsoft 等が影響
アカウント乗っ取り 正規パッケージのメンテナーのアカウントを乗っ取り、悪意あるコードを注入 event-stream 事件(2018年)
ビルドパイプライン攻撃 CI/CD パイプラインを侵害し、ビルド成果物にバックドアを仕込む SolarWinds 事件(2020年)

対策

  • ロックファイルの活用: package-lock.json / pnpm-lock.yaml をコミットし、依存関係のバージョンを固定する
  • スコープ付きパッケージ: 社内パッケージは @company/ スコープを使い、依存関係かく乱を防ぐ
  • SCA ツールの導入: npm audit / Snyk / Dependabot で既知の脆弱性を自動検出する
  • パッケージの検証: インストール前にダウンロード数・メンテナー・更新頻度・ソースコードを確認する
  • プライベートレジストリの優先設定: .npmrc でスコープごとにレジストリを明示的に指定する
  • CI/CD パイプラインの保護: ビルド環境のアクセス制御、署名付きコミットの要求、成果物のハッシュ検証

関連トピック