サプライチェーン攻撃
1か所の汚染が install を通じて下流へ連鎖する仕組みと、多層防御で止める勘所
サプライチェーン攻撃は、あなたが使う部品の供給元に毒を仕込み、install を通じて下流へ広げる手口です。一番効く防御は、公開直後の最新版にすぐ飛びつかないことです。
- 毒は install した瞬間に動き、間接依存にも潜む
- 防御はクールダウン・固定とハッシュ・最小権限の三段構え
なぜ「使っている部品」が狙われるのか
いまどきのソフトウェアは、直接・間接あわせて何百もの『借り物』の部品(ライブラリ)で組み上がっています。攻撃者は守りの堅いあなたを正面から狙わず、必ず使う部品の供給元に毒を仕込みます。上流を1か所汚せば、下流の何千ものプロジェクトへ一度に広がるからです。
サプライチェーン攻撃の広がり方
各ステップ・参加者・分岐をクリックすると、その仕組みの説明がここに表示されます。
この図をテキストで読む
シーケンス図「サプライチェーン攻撃の広がり方」。参加者5人、ステップ9個。 【参加者】(左から右) - 攻撃者: 毒を仕込む人 - OSSパッケージ: メンテナ / 上流 - レジストリ: npm / PyPI など - あなたの開発・CI: install / build - 利用者・本番: 配布先 【流れ】(上から下へ) ── ① 仕込み(上流をひそかに汚す) ── 1. 攻撃者 → OSSパッケージ: アカウント乗っ取り / 悪意ある貢献 2. OSSパッケージ → レジストリ: 毒入りの新バージョンを公開 3. レジストリ(自身で処理): 「最新版」として配信可能に ── ② 取り込み〜拡散(あなた経由で下流へ) ── 4. あなたの開発・CI → レジストリ: 依存を追加 / 更新(install) 5. レジストリ → あなたの開発・CI: 毒入りバージョンを取得(応答) 6. あなたの開発・CI(自身で処理): インストール時スクリプトが自動実行 7. あなたの開発・CI → 攻撃者: 認証情報・トークンを外部送信 8. あなたの開発・CI(自身で処理): ビルド成果物に毒が混入 9. あなたの開発・CI → 利用者・本番: 製品として配布される
どこで食い止めるか ── 多層防御の関所
各工程・分岐・レーンをクリックすると、その仕組みの説明がここに表示されます。
この図をテキストで読む
業務フロー図「どこで食い止めるか(多層防御の関所)」。レーン3本、工程7個。 【レーン(担当)】(左から右) - 取り込み: あなた / CI - 防御ゲート: 3つの関所 - 結果: 止める / 安全に取り込む 【工程】(上から下へ。担当 → 工程名) ── フェーズ: 持ち込み(依存の更新) ── 1. 取り込み: 依存を追加 / 更新〔開始・終了〕 ── フェーズ: 関所(3つの防御) ── 2. 防御ゲート: 公開から数日たっている?〔分岐〕(① クールダウン) 数日経過 → 固定したバージョン・ハッシュと一致? 公開直後 → 保留:数日待って再確認 3. 結果: 保留:数日待って再確認〔開始・終了〕(公開直後は受け入れない) 4. 防御ゲート: 固定したバージョン・ハッシュと一致?〔分岐〕(② 固定・整合性) 一致 → ビルドは最小権限・隔離されている? 不一致・改ざん → 取り込みを中止 5. 結果: 取り込みを中止〔開始・終了〕(改ざん・権限過大を検知) 6. 防御ゲート: ビルドは最小権限・隔離されている?〔分岐〕(③ 最小権限・隔離) 隔離OK → 安全に取り込む / ビルド 権限過大 → 取り込みを中止 ── フェーズ: 受け入れ(安全に採用) ── 7. 取り込み: 安全に取り込む / ビルド〔開始・終了〕(3つの関所を通過)
いちばん効くのは『すぐ入れない』
毒入りバージョンの多くは公開直後に発見・撤回されます。数日〜1週間寝かせてから取り込む『クールダウン』だけで、典型的な攻撃の多くをかわせます。このサイトのチームも、各自のPCに標準設定として入れています。
押さえておきたい用語
- サプライチェーン攻撃
- 使う部品やツールの『供給元』を汚し、下流の利用者まで一度に攻撃する手口。1か所の汚染が広く連鎖する。
- 依存(直接 / 間接)
- アプリに必要な部品のこと。自分で入れた直接依存と、その部品が使う間接依存があり、毒は間接依存に潜みやすい。
- レジストリ(npm / PyPI)
- ライブラリを公開・配布する倉庫。誰でも公開・取得できる手軽さの裏返しで、汚染の通り道にもなる。
- クールダウン
- 公開されたてのバージョンをすぐ入れず、数日〜1週間寝かせてから採用する運用。待つだけで多くの攻撃をかわせる。
- ロックファイル / 整合性ハッシュ
- 部品のバージョンと中身の指紋(ハッシュ)を記録する仕組み。同じ番号での中身すり替え・改ざんを検出できる。
- 最小権限 / 隔離ビルド
- install / build を、権限とネットワークを絞った隔離環境で動かすこと。毒が動いても被害を小さく抑える。
ここから先へ
この解説とつながりのあるページ