- 依存関係クールダウン(dependency cooldown) は、オープンソースのサプライチェーン攻撃の大半を緩和できる シンプルで効果的なセキュリティ手法
- 攻撃者は通常、人気のあるオープンソースプロジェクトを乗っ取って悪意あるコードを配布するが、ほとんどの攻撃は 露出期間が1週間以下 と短い
- 新バージョン公開後に一定期間(例: 7日)待機するクールダウンを設定すれば、自動更新による感染リスクを大幅に減らせる
- Dependabot、Renovate、pnpm などはすでに クールダウン機能を標準でサポート しており、設定も簡単で追加コストもない
- パッケージマネージャーのレベルでクールダウンを標準提供すれば、サプライチェーンセキュリティの強化と不要なアラートの削減 に貢献できる
サプライチェーン攻撃の構造と問題点
- ほとんどの サプライチェーン攻撃(supply chain attack) は同じパターンを持つ
- 攻撃者が人気オープンソースプロジェクトの 認証情報の窃取 または CI/CD の脆弱性 を利用してアクセス
- 悪意ある変更を配布チャネル(PyPI、npm など)にアップロード
- 自動更新やバージョン固定の不備により、ユーザーが感染したバージョンをインストール
- セキュリティベンダーがこれを検知して警告し、その後パッケージリポジトリが該当バージョンを削除
- (1)〜(2) 段階の間隔は長いが、(2)〜(5) 段階は 数時間〜数日以内に処理 されるため、攻撃者の活動期間は短い
- 最近18か月間の主要事例における 攻撃可能期間(window of opportunity)
- xz-utils: 約5週間
- Ultralytics: 12時間(1段階)、1時間(2段階)
- tj-actions: 3日
- chalk: 12時間未満
- Nx: 4時間
- rspack: 1時間
- num2words: 12時間未満
- Kong Ingress Controller: 約10日
- web3.js: 5時間
- このうち8件は 1週間未満の攻撃期間 で、ほとんどはクールダウンで防げる
クールダウンの概念と効果
- クールダウン(cooldown) は、新しい依存関係が公開された後、一定期間その使用を遅らせる方式
- この期間中にセキュリティベンダーが悪意の有無を検知できる
- 利点
結論と提言
- 10件中8件の攻撃は 1週間以下の期間 であり、7日間のクールダウン で大半を防げる
- 14日間のクールダウン を適用すれば、xz-utils を除くすべての事例を防御可能
- クールダウンは完璧な解決策ではないが、露出リスクを80〜90%減らせるシンプルな方法
- Dependabot、Renovate に加えて、パッケージマネージャー自体がクールダウンを標準サポート するよう改善が必要
- サプライチェーンセキュリティは技術的問題であるだけでなく、社会的な信頼構造 の問題でもあるが、クールダウンは現実的な緩和策として有用である
まだコメントはありません。