ソフトウェアのサプライチェーンがなぜ脆弱な状態にあるのか、その背景や原因、そして解決に向けた取り組みについて

サプライチェーンの問題は、多くの構成要素が分散的かつ独立して存在し、それぞれが固有のリスクを抱えていることに起因します。オープンソースライブラリやサードパーティの依存関係、CI/CDパイプライン、ソフトウェアパッケージングなどの各要素が、ソフトウェアの開発から運用に至るまでのプロセスにおいて重要な役割を果たしますが、それと同時に脆弱性を生み出す要因ともなっています。

例えば、オープンソースライブラリは再利用可能なコードを提供する一方で、パッチ未適用の脆弱性や悪意のあるコードが混入するリスクがあります。また、サードパーティの依存関係は、供給元が悪意を持っている場合や、信頼できないライブラリが含まれている場合に問題を引き起こします。さらに、CI/CDパイプラインのようにビルドとデプロイを自動化する仕組みも、乗っ取られることで不正なコード変更が行われるリスクを伴います。このように、ソフトウェアサプライチェーンの全体像を把握し、すべての要素を適切に管理することは、極めて困難な課題です。

これに対し、SigstoreSLSAフレームワークOpenSSFスコアカードSBOM(ソフトウェア部品表)TUF(The Update Framework)S2C2Fなど、さまざまなツールやフレームワークが開発されています。これらの取り組みは、脆弱性の軽減や信頼性の向上に向けたものです。たとえば、Sigstoreはソフトウェアアーティファクトの署名と検証を簡略化し、SLSAフレームワークはビルドパイプラインの安全性を高める成熟度モデルを提供します。さらに、SBOMはソフトウェアコンポーネントの詳細なインベントリを提供し、迅速な脆弱性特定を可能にします。

しかし、これらのツールやフレームワークは、それぞれ独立して機能しているため、全体としての統合が不十分なままです。サプライチェーンは一見すると統合的な仕組みに見えますが、実際には個々のリンクが孤立しており、それぞれが独自の方法で運用されています。このような分断された状況では、ツールやフレームワークを有効に連携させるための責任が明確ではなく、その結果、攻撃者に狙われる隙が生まれています。

一方で、この分散化には利点もあります。分散型アプローチはイノベーションと適応性を促進し、独立したチームが並行してツールやフレームワークを開発することで、進化の速度が加速します。ただし、この強みを活かしながらもリスクを軽減するには、各ステークホルダー間の協力が不可欠です。ソフトウェアベンダーは、自身のCI/CDパイプラインや依存関係の安全性を確保し、エンタープライズユーザーは導入するコンポーネントを評価・監視する必要があります。さらに、オープンソースコミュニティやツールプロバイダー、政府・規制機関が連携し、標準化されたセキュリティフレームワークを構築することが求められています。

最終的に、ソフトウェアサプライチェーンのセキュリティを確保するには、単に複雑性を排除するのではなく、その複雑性を明確な目的を持って管理することが重要です。開発から運用に至る各段階で信頼を築くことで、イノベーションを推進しながらも脅威に対抗するエコシステムを実現できます。

NIST 大統領令14028号、国家のサイバーセキュリティの向上
サプライチェーンにおけるソフトウェアセキュリティ: 生産者とユーザーのためのソフトウェアサイバーセキュリティ

EO 14028は、連邦政府のITおよびソフトウェアセキュリティを向上させるために策定された指令です。その中でも、Section 4(e) では、ソフトウェア開発プロセスのセキュリティを向上させるために必要な10の行動と成果を定めています。

https://www.nist.gov/itl/executive-order-14028-improving-nations-cybersecurity/software-security-supply-chains-software

投稿者: 二本松 哲也

SPbD:Security&Privacy by Design Founder ー OWASP Member ー ITは人々の生活をあらゆる面でより良い方向に変化させること ー 競争原理から共創原理へ