@@ -205,9 +205,9 @@ SBOMの交換フォーマットの仕様によりパッケージとファイル
205205
206206##### 5.4.1. 課題の概要
207207ソフトウェア製品のコンポーネント単位での脆弱性管理やセキュリティリスク管理を強化するために、SBOMの次のような情報が活用できる。しかし、これらは必ずしも正確かつ網羅的に記述できない。
208- 1 . 各コンポーネントの脆弱性の有無を知るために脆弱性情報と照合できる 、コンポーネント識別情報
208+ 1 . 各コンポーネントの脆弱性の有無を知るために脆弱性情報と照合可能な 、コンポーネント識別情報
2092092 . 見つかった脆弱性を報告したり対処を依頼するための、コンポーネントの提供者情報
210- 3 . 見つかった脆弱性が他のコンポーネントに及ぼす影響を知るための 、コンポーネント間の依存関係
210+ 3 . 見つかった脆弱性が他のコンポーネントに及ぼす影響を把握するための 、コンポーネント間の依存関係
2112114 . 脆弱性がソフトウェア製品に及ぼす影響の有無や対処のステータスを記した、セキュリティアドバイザリ
212212
213213![ Vuln Management] ( images/fig5.4-1.png )
@@ -216,11 +216,11 @@ SBOMの交換フォーマットの仕様によりパッケージとファイル
216216##### 5.4.2. 課題の詳細
217217<!-- 対象課題の現状と理想状態を簡潔に説明, 図示しても良い -->
218218SBOMの中で脆弱性管理およびセキュリティリスク管理に利用される情報には、それぞれ次のような課題がある。
219- 1 . コンポーネントの識別情報にコンポーネントの名前とバージョンを使用する場合、5.1.2節で例示されたような名前の表記揺れが生じ、脆弱性の検出漏れに繋がる。PURLやCPE名などの一意な識別子を記載しても、照合先の脆弱性データベースが対応していない場合がある 。
220- 2 . 特にツールで生成されたSBOMの提供者情報は、記載されていない場合や 、組織や個人が特定し難い記述になっている、名前のみで連絡用アドレスがないなど、問合せに利用できない場合がある。<br >
221- (コンポーネントの提供者情報:SPDX v2.3では packages[ ] .supplier, SPDX v3.0では@graph [ ] .suppliedBy,CycloneDXではcomponents[ ] .supplier)
222- 3 . ツールの種類や設定、またはソフトウェア製品の開発言語や開発環境によって、コンポーネント間の依存関係が取得できない場合がある 。
223- 4 . セキュリティアドバイザリの記述手段としてCSAF[ ^ CSAF ] やVEX[ ^ VEX ] があるものの、フォーマットや配布方法などが定まっておらず、対応しているツールも少ない 。
219+ 1 . コンポーネントの識別情報にコンポーネントの名前とバージョンを使用する場合、5.1.2節で例示されたような名前の表記揺れが生じ、脆弱性の検出漏れに繋がる。PURLやCPE名などの一意な識別子を記載しても、照合先の脆弱性データベースに記載されていない場合がある 。
220+ 2 . 特にツールで生成されたSBOMの提供者情報は、未記載であったり 、組織や個人が特定し難い記述になっている、名前のみで連絡用アドレスがないなど、問合せに利用できない場合がある。<br >
221+ (コンポーネントの提供者情報:JSON形式の場合、 SPDX v2.3では packages[ ] .supplier, SPDX v3.0では@graph [ ] .suppliedBy,CycloneDXではcomponents[ ] .supplier)
222+ 3 . ツールの種類や設定、またはソフトウェア製品の開発言語や開発環境によって、コンポーネント間の依存関係が網羅的に取得できない場合がある 。
223+ 4 . セキュリティアドバイザリの記述手段としてCSAF[ ^ CSAF ] やVEX[ ^ VEX ] があるものの、フォーマットや配布方法などが定まっておらず、対応しているツールや情報を提供しているサプライヤも少ない 。
224224
225225[ ^ CSAF ] : Common Security Advisory Framework, https://www.csaf.io
226226[ ^ VEX ] : Vulnerability Exploitability eXchange, https://www.ntia.gov/files/ntia/publications/vex_one-page_summary.pdf
@@ -229,15 +229,16 @@ SBOMの中で脆弱性管理およびセキュリティリスク管理に利用
229229<!-- 問題解決のための具体的な対策(例:自動チェックツール導入、記述ルールの統一)-->
230230<!-- 改善策の実施手順の概要 -->
231231
232- 上述の各課題は、それぞれ次のような対応により改善することができる 。
232+ 上述の各課題は、それぞれ次のような対策によって改善が期待できる 。
233233
234- 1 . OSV[ ^ OSV ] やNVD[ ^ NVD ] など、利用する脆弱性データベースに登録されているソフトウェアの名前や同様の表記方法を用いてコンポーネントの名前を記述する。または、それぞれの脆弱性データベースに採用されているソフトウェア識別子を記載する (例えばOSVならばPURL、NVDならばCPE名)。
234+ 1 . OSV[ ^ OSV ] やNVD[ ^ NVD ] など、利用する脆弱性データベースに登録されているソフトウェアの名前や同様の表記方法を用いてコンポーネントの名前を記述する。また、それぞれの脆弱性データベースで採用されているソフトウェア識別子をコンポーネント情報に付与する (例えばOSVならばPURL、NVDならばCPE名)。
2352352 . コンポーネントの提供者情報には、可能な限り実在し且つ公表されていることを確認した上で組織や個人の名前、および有効なE-mailアドレスやURLなどの問合せ先情報を記載する。
236- 3 . パッケージマネージャからコンポーネント間の依存関係を取得できるツールを利用し、依存関係を含んだSBOMを生成する。また、可能な限りSBOMを生成可能なビルドツールを用いてビルド時にSBOMを生成する 。
237- 4 . セキュリティアドバイザリの情報が公開されている場合は 、SBOMに外部参照情報として記載する。相当する情報はあるが機械可読ではない文章の場合は、VEXの必要最小限の情報を記述できるOpenVEXのフォーマット[ ^ OpenVEX ] で外部参照情報を作成すると良い。また、 SPDX v3.0以降やCyclondDX v1.4以降では、SBOMと同じドキュメント内に記載することもできる。
236+ 3 . パッケージマネージャからコンポーネント間の依存関係を取得できるツールを利用し、依存関係を含んだSBOMを生成する。また、可能な限りSBOMを生成可能なビルドツールを用いてCISAのSBOM Type分類 [ ^ SBOMType ] におけるBuild SBOMを生成する 。
237+ 4 . 対象のコンポーネントに関するセキュリティアドバイザリの情報が公開されている場合は 、SBOMに外部参照情報として記載する。相当する情報はあるが機械可読ではない文章の場合は、VEXの必要最小限の情報を記述できるOpenVEXのフォーマット[ ^ OpenVEX ] で外部参照情報を作成すると良い。SPDX v3.0以降やCyclondDX v1.4以降では、SBOMと同じドキュメント内に記載することもできる。
238238
239239[ ^ OSV ] : A distributed vulnerability database for Open Source, https://osv.dev
240240[ ^ NVD ] : National Vulnerability Database, https://nvd.nist.gov
241+ [ ^ SBOMType ] : Types of Software Bill of Materials (SBOM), https://www.cisa.gov/resources-tools/resources/types-software-bill-materials-sbom
241242[ ^ OpenVEX ] : OpenVEX, https://openssf.org/projects/openvex/
242243
243244<!--
@@ -284,13 +285,13 @@ CPE名に比べて表記揺れの可能性が低く、ソフトウェア開発
284285- SBOMのコンポーネント識別情報と脆弱性情報との照合を、なるべく作成者や作成ツールが異なる多くのSBOMドキュメントと脆弱性情報で試行し、精度を確認する。精度は、適合率(正確さ)のほか、可能であれば再現率(網羅性)も計測し、実用的な期待値となっているかを確認する。
285286
2862872 . コンポーネントの提供者情報
287- - SBOM生成ツールから出力されたコンポーネントの提供者情報についても、その組織名や個人名、連絡先の情報が存在するかどうかを、Web検索などによって確認する 。
288+ - SBOM生成ツールから出力されたコンポーネントの提供者情報についても、その組織名や個人名、連絡先の情報が存在するかどうかを、WebやSNSでの情報発信の有無と最新の発信日時などによって確認する 。
288289
2892903 . コンポーネント間の依存関係の精度評価
290291- 依存関係も、コンポーネントの識別情報と同様に期待値としての精度を評価しておくと良い。SBOM生成ツールにおいて、パッケージマネージャを用いた依存関係抽出では高い精度を期待できるが、コード解析による抽出では誤検出や検出漏れの可能性がある。
291292
2922934 . セキュリティアドバイザリの調査
293- - VEXのようなセキュリティアドバイザリは 、まだ限られた一部のソフトウェアベンダーが提供している程度だが、特に脆弱性発見の頻度が高いソフトウェアについては提供者のセキュリティ情報サイトなどでアドバイザリまたはこれに相当する情報がないか確認する。
294+ - VEXなどの機械可読な形式のセキュリティアドバイザリは 、まだ限られた一部のソフトウェアベンダーが提供している程度だが、特に脆弱性発見の頻度が高いソフトウェアについては提供者のセキュリティ情報サイトなどでアドバイザリまたはこれに相当する情報がないか確認する。
294295
295296##### 5.4.5. リスクと留意事項
296297<!-- 改善策実施に伴うリスク、例外対応、補足事項 -->
@@ -299,19 +300,20 @@ CPE名に比べて表記揺れの可能性が低く、ソフトウェア開発
2993001 . 脆弱性情報と照合するためのコンポーネントの識別情報について
300301 - 脆弱性情報との照合にコンポーネントの名前とバージョンを用いる場合、脆弱性情報に記載されているソフトウェアの名前の表記方法は、脆弱性情報の種類によって若干異なる場合がある。また、ツールから出力されたコンポーネントの名前にも表記揺れが生じうる(5.1節参照)。
301302 - 脆弱性情報との照合にコンポーネントのPURLを利用できる脆弱性データベースは、現状では一部に限られている(OSVはPURLに対応、NVDは未対応)。
302- - いずれかのコンポーネントの実行時に動的に読み込まれるようなコンポーネントの情報はSBOMに記述されていない場合がある。
303+ - NVDなどで採用されているCPE名には表記揺れが生じうる。同じコンポーネントが、表記の異なる複数のCPE名で脆弱性情報に紐付けられている場合がある。
304+ - いずれかのコンポーネントの実行時に動的に読み込まれるようなコンポーネントの情報は、SBOMに記述されていない場合がある。
303305<!-- また、PURLではバージョンがオプションとなっているが、これがないと脆弱性情報との一意な対応付けができないため、PURLが自動生成される場合もSBOMの全てのコンポーネントのPURLに(SBOM自体のバージョン属性やCPEにも)バージョンが記載されていることを確認する。それでも、バージョン記述の揺れによる照合ミスのリスクは残ることに留意すべき。-->
304306
3053072 . コンポーネントの提供者情報について
306308 - コンポーネントの名前と同様に、提供者名も表記揺れによって一貫性が保たれない場合がある(5.1節参照)。
307- - コンポーネント(パッケージ)の提供者は、企業の買収や事業停止、個人の都合などによって、開発やサポートが停止していたり他者へ移っている場合がある。SBOMにEOL/EOS情報があるかの確認、アップデートや問い合わせ対応などの状況を見ておくことも、リスク管理の一環となる 。
309+ - コンポーネント(パッケージ)の提供者は、企業の買収や事業停止、個人の都合などによって、開発やサポートが停止していたり他者へ移っている場合がある。そうした動向の定期的な確認も重要である 。
308310
3093113 . コンポーネント間の依存関係について
310- - SBOMに記述されたコンポーネント間の依存関係は、実際に動作しているソフトウェアにおける依存関係とは必ずしも一致しない。その理由としては、依存関係抽出の精度不足のほか、動的に読み込まれるコンポーネントに関する依存関係が記述されていない場合や 、逆にソフトウェアの実行時に一部のコンポーネントが利用されない場合などがある。
312+ - SBOMに記述されたコンポーネント間の依存関係は、実際に動作しているソフトウェアにおける依存関係とは必ずしも一致しない。その理由としては、依存関係抽出の精度不足のほか、動的に読み込まれるコンポーネントに関する依存関係が記載されていない場合や 、逆にソフトウェアの実行時に一部のコンポーネントが利用されない場合などがある。
311313 - 特に、ビルドツールでSBOMを生成できない場合、ソースコードやバイナリコードの解析によって生成されたSBOMにおけるコンポーネント間の依存関係には、高い精度や網羅性を期待し難い場合がある。
312314
3133154 . セキュリティアドバイザリについて
314- - 膨大な数のコンポーネントで構成されたソフトウェアでは同時に大量の脆弱性が検出される場合がある一方、その大半に即時の対応を要するケースは少なく 、適切なトリアージが必要である。しかし、まだ大半のコンポーネントについてVEXのような定型で機械可読なセキュリティアドバイザリが提供されていない現状では、脆弱性の影響有無や対処手段を一括で取得し管理することが容易でないため、過去に判断を保留したものを含めて見落としが無いか注意する必要がある 。
316+ - 膨大な数のコンポーネントで構成されたソフトウェアでは同時に大量の脆弱性が検出される場合がある一方、その大半に即時の対応を要するケースは相対的に少なく 、適切なトリアージが必要である。しかし、まだ大半のコンポーネントについてVEXのような定型で機械可読なセキュリティアドバイザリが提供されていない現状では、脆弱性の影響有無や対処手段を一括で取得し管理することが容易でないため、過去に判断を保留したものを含めて脆弱性対応のためのアップデータの適用等に見落としが無いか注意する必要がある 。
315317
316318
317319#### 5.5 上流・下流間の情報統合と連携強化
0 commit comments