ソフトウェアがビジネスの重要な一部であり、ライセンス条項に準拠し、セキュリティ脆弱性に対処する必要があるなら、ソフトウェアの中身を知り、追跡する必要があります。ソフトウェアのコンポーネントと依存関係のリストを、通常、ソフトウェア部品表(SBOM)と呼びます。
SBOMのフォーマットを標準化することで、ソフトウェアのライセンス・コンプライアンスとセキュリティ脆弱性を管理する際の正確性と効率を向上させることができます。これは特に、ソフトウェアに多数のサプライヤーが関わっている場合に当てはまります。これは商用ライブラリに依存するソフトウェアでよく見られ、こうしたライブラリが使用するオープンソース・ライブラリにはさらに別のオープンソース・プロジェクトのソースが含まれています。また、顧客がベンダーにSBOMの提供を期待するのは当たり前のことになりつつあり、標準化することが、関係者全員の効率向上につながります。さらに、2021年5月12日に発令された、大統領令14028「Improving the Nation’s Cybersecurity」では、米国政府がソフトウェア・サプライヤーに対してSBOMを標準形式で作成することを義務付けています。
Software Package Data Exchange(SPDX)は、SBOMの標準形式の1つです(ISO/IEC 5962:2021)。この形式は10年以上前からありますが大幅に進化しており、おそらく最も重要な点は、その内容が脆弱性にまで及んでいるということです。そして近々公開される次のメジャー・リリースでは、人工知能モデルに関するビルド・プロセスとデータの追跡など、脆弱性管理を超えたいくつかの新しいユース・ケースをサポートする予定となっています。
SPDXを使用したセキュリティ脆弱性の追跡
SPDX 2.3は、セキュリティに関連するいくつかの重要な要素をサポートしています。あるセキュリティ脆弱性を示すには、パッケージの特定のバージョンを一意に示す必要があります。SPDX 2.3パッケージは外部参照を持つことができ、これによってパッケージは外部の情報源を参照できます。識別子として使用できる外部参照は以下のとおりです。
- Swh:Software Heritage ID
- Gitoid:OmniBOR ID
セキュリティとパッケージの以下の外部参照も、識別子としてよく使用されます。
- Swid:ソフトウェアID
- Purl:パッケージURL
- cpe22Type:NIST Common Platform Enumerationバージョン2.2
- cpe23Type:NIST Common Platform Enumerationバージョン2.3
これらの識別子を1つ以上使用して、SPDX形式のパッケージを脆弱性データベースに登録された脆弱性と関連付けることができます。例えば、spdx-2-osvユーティリティは入力としてSPDX文書を受け取り、OSVデータベースで見つかった脆弱性を出力します。
また、SPDX 2.3は既知のアドバイザリ、修正プログラム、一般的なセキュリティ情報の外部参照もサポートしています。SPDX仕様の付録Kには、これらの外部参照の使用例がいくつか紹介されています。
近い将来のSPDX:3.0
SPDX 3.0は、近々公開予定の仕様のメジャー・リリースであり、人工知能データや反復可能なビルドのSBOMなどの分野も含めてユース・ケースを増やし、仕様をわかりやすく、実装しやすくすることを目的としています。
そのためこのリリースは、特にSPDXデータの個々の生産者や消費者が関心のある内容についての広範なユース・ケース(すなわち「プロファイル」)に基づいて構成されています。プロファイルの使用方法の詳細については、こちらのブログ投稿をお読みください。
SPDX 3.0には以下のプロファイルがあります。
- セキュリティ:SPDXセキュリティ文書にセキュリティ関連情報を含める
- ビルド:ソフトウェアビルドに関して集めた詳細情報を含める
- AI:AIシステムに関連するソフトウェア・コンポーネントと依存関係の一覧を文書化する
- データ:AIシステムやアプリケーションで使用するデータセットの関連情報を含める
- ライセンス:ソフトウェア・ライセンスに関して集めた詳細情報を含める
- コア:すべてのSPDXプロファイルで使用されるクラス、プロパティ、用語の定義を含める
- ソフトウェア:ソフトウェアに固有のコア・プロファイルを拡張する
特にセキュリティ・プロファイルを見てみると、セキュリティ情報を示す方法がいくつか追加されていることがわかります。セキュリティ脆弱性に関するデータを、SPDX文書自体で示すことができるようになりました。SPDX独自の要素として、データ自体と、それを記述する1つ以上のパッケージの間に、以下のような複数の関係を持たせることができます
- パッケージにその脆弱性があるかどうか
- 脆弱性を悪用可能かどうかに関して、特定のパッケージ/脆弱性の組み合わせの評価が実施されているかどうか
- パッケージが脆弱性の影響を受けると評価されたかどうか
- 脆弱性に関する情報の出所
- その脆弱性に関するその他の参考資料
セキュリティ・プロファイルがSPDX 3.0でどのような役割を果たすかについては、ブログ投稿の「SPDX 3.0によるソフトウェア脆弱性データの収集」を参照してください。
将来のSPDX:SPDX 3.1
SPDX 3.1の開発は順調に進んでおり、以下の3つのプロファイルが追加される予定です。
- サービス:Software-as-a-Serviceプロファイル
- ハードウェア:ハードウェアBOM情報、特にソフトウェアに関連する要素
- セーフティ:機能安全に関連するSBOMとハードウェアBOM情報
ぜひご参加ください
興味のあるトピックがありましたら、SPDXコミュニティにぜひご参加ください。私たちは組織として、オープンかつ協調的に活動しています。ソフトウェア・サプライ・チェーンをより安全で信頼性が高く、ライセンスや政府規制に準拠したものにするために、皆さんのご参加をお待ちしております。