現代のソフトウェア開発では、複雑な依存関係と多層的な構造が一般的になっており、供給チェーンのセキュリティが重要な課題となっています。特に、2019年のSolarWinds攻撃や2021年のLog4Shell脆弱性など、供給チェーンを狙った攻撃が頻発しています。本記事では、SLSA(Software Supply Chain Levels for Software Artifacts)フレームワークとCNCF(Cloud Native Computing Foundation)が提供する実裝戦略を通じて、ソフトウェア供給チェーンのセキュリティを強化する方法を解説します。
現代のアプリケーションは、多數の依存関係(dependency)を組み合わせて構築されるため、**転置依存関係(transitive dependencies)**が発生しやすくなります。これにより、**依存関係地獄(dependency hell)**が生じ、不正な暗號ライブラリやマルウェアが組み込まれるリスクが高まります。また、依存関係のソースが不明な場合、攻撃者が悪意のあるライブラリを挿入する可能性があります。
攻撃経路には、開発者による悪意コードの挿入、Gitなどのバージョン管理システムの侵入、依存関係內にマルウェアを埋め込むなどが含まれます。
開発サイクルの初期段階でセキュリティチェックを実施し、バグや脆弱性を早期に発見。
SLSA 1.0は、4段階の構築プロセスを定義し、信頼性の高いソフトウェアアーティファクトを保証します。
SLSAは、二段階認証(2FA)、PRのレビュー者2名制、匿名貢獻者の禁止、GitHub Actionsのラベル制御など、ゼロトラスト原則に則した設計を採用しています。
SixStoreは、ソフトウェアパッケージの信頼性を確保するための3つの核心コンポーネントを備えています。
ワークフローは以下の通りです。
SBOMは、ソフトウェアに含まれるすべてのコンポーネントを明記するリストで、食譜の材料リストに例えられます。
SBOMは、ソフトウェアの出所を明確にし、リスク評価やトレーサビリティを支援します。
ChainGuardは、新しい脆弱性(CV)が発見された際に以下の手順で対応します。
このプロセスは、ソフトウェア供給チェーンのセキュリティ原則に従い、無脆弱なイメージを維持します。
SLSAフレームワークは、ソフトウェア供給チェーンの信頼性を確保するための4段階構築プロセスを提供し、透明性と署名検証を強調しています。SixStoreは、Recordを通じた透明性ログにより、パッケージの出所を可視化し、SBOMはコンポーネントの明確化を実現します。ChainGuardは、継続的な検証と構築プロセスの更新により、脆弱性のリスクを最小限に抑えます。
実裝においては、SLSAの各段階を段階的に導入し、CNCFのツールやアーキテクチャを活用することで、セキュリティを強化することが可能です。