サプライチェーン攻撃とは何か? 依存関係を通じてソフトウェアを侵害する
サプライチェーン攻撃は、ソフトウェアを直接破ることではなく、それが信頼する何か、つまり依存関係、buildツール、またはパイプライン自体を汚染することで侵害します。
現代のソフトウェアは数え切れないサードパーティの部品から組み立てられ、あなたはそのすべてを信頼しています。サプライチェーン攻撃はその信頼を悪用します。攻撃者は堅牢化されたアプリケーションを攻撃する代わりに、upstreamの依存関係やあなたのbuildプロセスを汚染し、その信頼に乗ってあなたのソフトウェアとユーザーへとまっすぐ入り込みます。それはあなたが依存するものを攻撃することで、あなたを攻撃するのです。
その形態
- build中にインストールされる悪意のある、または乗っ取られた依存関係。
- 侵害されたbuildツールやCI/CDシステム。
- build後にすり替えられた改ざん済みartifact。
- 信頼されるベンダーを通じて配布されるバックドア入りの更新。
なぜ攻撃者はこれを好むのか
1つの侵害されたupstreamコンポーネントは、一度に何千ものdownstreamの被害者に到達できます。攻撃者は各標的に侵入するのではなく、共有された依存関係や広く使われるベンダーを汚染し、信頼関係に配布させます。そのレバレッジは莫大です。
標的としてのパイプライン
CI/CDは中心に位置するため格好の標的です。secretを保持し、artifactをbuildし、releaseに署名します。パイプラインを侵害すれば、攻撃者はdownstreamの誰もが信頼するソフトウェアを改ざんできます。だからこそパイプラインのセキュリティはサプライチェーンのセキュリティなのです。
多層防御
単一の制御でサプライチェーン攻撃を止められるものはありません。それらを組み合わせます: 依存関係のpinningとscanning、可視性のためのSBOM、整合性のための署名付き来歴とattestation、パイプラインでのleast privilegeと分離、流出をブロックするためのegressフィルタリング。
buildプラットフォームの位置づけ
いくつかの防御は信頼できるbuild環境に依存します。来歴はbuilderの信頼性次第であり、分離は侵害されたbuildを封じ込めます。分離されたエフェメラルなランナー (Latchkeyのような) は、各buildにクリーンで改ざん耐性のある環境を与え、パイプラインの攻撃対象領域を減らします。
重要なポイント
- サプライチェーン攻撃は、ソフトウェアが信頼する何かを通じてそれを侵害します。
- 依存関係、buildツール、CI/CDパイプラインが主な標的です。
- 防御は多層的です: pinning、scanning、SBOM、来歴、分離、egress制御。