Skip to content

Commit 5193076

Browse files
authored
Merge pull request #416 from itahoso/master
Section 5.4 updated.
2 parents cb79b29 + 15f67b7 commit 5193076

2 files changed

Lines changed: 37 additions & 28 deletions

File tree

subgroups/sbom-sg/outcomes/QualityGuide/SBOM-Document-Quality-Guide.ja.md

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -254,39 +254,42 @@ SBOM受領者が、SBOM提供者がバイナリコンポーネントに付与さ
254254
<!-- (細見)セクションのタイトルにあった「脆弱性連携」という言葉があまりポピュラーでないことと内容が限定的に思われたため、「脆弱性管理」に変更しています -->
255255

256256
##### 5.4.1. 課題の概要
257-
SBOMを利用した、ソフトウェア製品のコンポーネント単位での脆弱性管理やセキュリティリスク管理の強化が期待されている。そのためには、SBOMに次のような情報が正確かつ網羅的に記載されていることが重要となるが、いずれも容易とは言い難い。
258-
1. 各コンポーネントの脆弱性の有無を知るために脆弱性情報と照合できる識別情報
259-
2. 見つかった脆弱性の報告や対処を依頼するための該当コンポーネントの提供者情報
260-
3. その脆弱性が他のコンポーネントに及ぼす影響を知るためのコンポーネント間の依存関係
261-
4. その脆弱性がソフトウェア製品に及ぼす影響の有無や状態を記したセキュリティアドバイザリ
257+
ソフトウェア製品のコンポーネント単位での脆弱性管理やセキュリティリスク管理を強化するために、SBOMの次のような情報が活用できる。しかし、これらは必ずしも正確かつ網羅的に記述できない。
258+
1. 各コンポーネントの脆弱性の有無を知るために脆弱性情報と照合可能な、コンポーネント識別情報
259+
2. 見つかった脆弱性を報告したり対処を依頼するための、コンポーネントの提供者情報
260+
3. 見つかった脆弱性が他のコンポーネントに及ぼす影響を把握するための、コンポーネント間の依存関係
261+
4. 脆弱性がソフトウェア製品に及ぼす影響の有無や対処のステータスを記した、セキュリティアドバイザリ
262+
263+
![Vuln Management](images/fig5.4-1.png)
264+
<div align="center">脆弱性管理の流れ</div>
262265

263266
##### 5.4.2. 課題の詳細
264267
<!-- 対象課題の現状と理想状態を簡潔に説明, 図示しても良い -->
265268
SBOMの中で脆弱性管理およびセキュリティリスク管理に利用される情報には、それぞれ次のような課題がある。
266-
1. コンポーネントの識別情報にコンポーネントの名前とバージョンを使用する場合、5.1.2節で例示されたような名前の表記揺れが生じ、脆弱性の検出漏れに繋がる。PURLやCPE名などの一意な識別子を記載しても、照合先の脆弱性データベースが対応していない場合がある。
267-
2. 特にツールで生成されるSBOMの提供者情報は、記載されていない、一般に知られていない略称や提供者ではない文字列が記載されている、連絡用アドレスがないなど、問合せに利用できない場合がある。
268-
3. ツールの種類や設定、またはソフトウェア製品の開発言語や開発環境によって、コンポーネント間の依存関係が取得できない場合がある。
269-
4. セキュリティアドバイザリの標準的な記述形式としてCSAFやVEXがあるものの、まだあまり普及しておらず、対応しているツールも少ない。
269+
1. コンポーネントの識別情報にコンポーネントの名前とバージョンを使用する場合、5.1.2節で例示されたような名前の表記揺れが生じ、脆弱性の検出漏れに繋がる。PURLやCPE名などの一意な識別子を記載しても、照合先の脆弱性データベースに記載されていない場合がある。
270+
2. 特にツールで生成されたSBOMの提供者情報は、未記載であったり、組織や個人が特定し難い記述になっている、名前のみで連絡用アドレスがないなど、問合せに利用できない場合がある。<br>
271+
(コンポーネントの提供者情報:JSON形式の場合、SPDX v2.3では packages[].supplier, SPDX v3.0では@graph[].suppliedBy,CycloneDXではcomponents[].supplier)
272+
3. ツールの種類や設定、またはソフトウェア製品の開発言語や開発環境によって、コンポーネント間の依存関係が網羅的に取得できない場合がある。
273+
4. セキュリティアドバイザリの記述手段としてCSAF[^CSAF]やVEX[^VEX]があるものの、フォーマットや配布方法などが定まっておらず、対応しているツールや情報を提供しているサプライヤも少ない。
270274

271-
| |
272-
|---|
273-
|このあたりに、SBOMと脆弱性情報との突合〜リスク管理の大まかなフロー図を入れようかと|
274-
| |
275+
[^CSAF]: Common Security Advisory Framework, https://www.csaf.io
276+
[^VEX]: Vulnerability Exploitability eXchange, https://www.ntia.gov/files/ntia/publications/vex_one-page_summary.pdf
275277

276278
##### 5.4.3. 改善策
277279
<!-- 問題解決のための具体的な対策(例:自動チェックツール導入、記述ルールの統一)-->
278280
<!-- 改善策の実施手順の概要 -->
279281

280-
上述の各課題は、それぞれ次のような対応により改善することができる
282+
上述の各課題は、それぞれ次のような対策によって改善が期待できる
281283

282-
1. OSV[^OSV]やNVD[^NVD]など、利用する脆弱性データベースに登録されているソフトウェアの名前や同様の表記方法を用いてコンポーネントの名前を記述する。または、それぞれの脆弱性データベースに採用されているソフトウェア識別子を記載する(例えばOSVならばPURL、NVDならばCPE名)。
283-
2. コンポーネントの提供者情報には、実在し且つ公開されている組織や個人の名前、および有効なE-mailアドレスやURLなどの問合せ先情報を記載する。
284-
3. パッケージマネージャからコンポーネント間の依存関係を取得できるツールを利用し、依存関係を含んだSBOMを生成する。
285-
4. 見つかった脆弱性が影響するコンポーネントやその影響状態を記したVEXの情報がある場合は、SBOMに外部参照情報として記載する。フォーマットが対応していればSBOMとVEXを同じドキュメントに記載してもよい。[^VEX]
284+
1. OSV[^OSV]やNVD[^NVD]など、利用する脆弱性データベースに登録されているソフトウェアの名前や同様の表記方法を用いてコンポーネントの名前を記述する。また、それぞれの脆弱性データベースで採用されているソフトウェア識別子をコンポーネント情報に付与する(例えばOSVならばPURL、NVDならばCPE名)。
285+
2. コンポーネントの提供者情報には、可能な限り実在し且つ公表されていることを確認した上で組織や個人の名前、および有効なE-mailアドレスやURLなどの問合せ先情報を記載する。
286+
3. パッケージマネージャからコンポーネント間の依存関係を取得できるツールを利用し、依存関係を含んだSBOMを生成する。また、可能な限りSBOMを生成可能なビルドツールを用いてCISAのSBOM Type分類[^SBOMType]におけるBuild SBOMを生成する。
287+
4. 対象のコンポーネントに関するセキュリティアドバイザリの情報が公開されている場合は、SBOMに外部参照情報として記載する。相当する情報はあるが機械可読ではない文章の場合は、VEXの必要最小限の情報を記述できるOpenVEXのフォーマット[^OpenVEX]で外部参照情報を作成すると良い。SPDX v3.0以降やCyclondDX v1.4以降では、SBOMと同じドキュメント内に記載することもできる。
286288

287289
[^OSV]: A distributed vulnerability database for Open Source, https://osv.dev
288290
[^NVD]: National Vulnerability Database, https://nvd.nist.gov
289-
[^VEX]: Vulnerability Exploitability eXchange, CycloneDX v1.4以降やSPDX v3.0以降ではそれぞれのフォーマットでSBOMとVEXの情報を1つのドキュメントとして記述可能
291+
[^SBOMType]: Types of Software Bill of Materials (SBOM), https://www.cisa.gov/resources-tools/resources/types-software-bill-materials-sbom
292+
[^OpenVEX]: OpenVEX, https://openssf.org/projects/openvex/
290293

291294
<!--
292295
前述した各課題への基本的な対応方法は次の通り。
@@ -332,11 +335,13 @@ CPE名に比べて表記揺れの可能性が低く、ソフトウェア開発
332335
- SBOMのコンポーネント識別情報と脆弱性情報との照合を、なるべく作成者や作成ツールが異なる多くのSBOMドキュメントと脆弱性情報で試行し、精度を確認する。精度は、適合率(正確さ)のほか、可能であれば再現率(網羅性)も計測し、実用的な期待値となっているかを確認する。
333336

334337
2. コンポーネントの提供者情報
335-
- SBOM生成ツールから出力されたコンポーネントの提供者情報についても、その組織名や個人名、連絡先の情報が存在するかどうかを、Web検索などによって確認する。
338+
- SBOM生成ツールから出力されたコンポーネントの提供者情報についても、その組織名や個人名、連絡先の情報が存在するかどうかを、WebやSNSでの情報発信の有無と最新の発信日時などによって確認する。
339+
340+
3. コンポーネント間の依存関係の精度評価
341+
- 依存関係も、コンポーネントの識別情報と同様に期待値としての精度を評価しておくと良い。SBOM生成ツールにおいて、パッケージマネージャを用いた依存関係抽出では高い精度を期待できるが、コード解析による抽出では誤検出や検出漏れの可能性がある。
336342

337-
3. コンポーネント間の依存関係の精度評価とセキュリティアドバイザリの調査
338-
- 依存関係も、コンポーネントの識別情報と同様に期待値としての精度を評価しておくと良い。SBOM生成ツールにおいて、パッケージマネージャを用いた依存関係抽出では高い精度を期待できるが、コード解析による抽出では誤検出や検出漏れの可能性がある。<br>
339-
- VEXは、まだ限られた一部のソフトウェアベンダーが提供している程度だが、セキュリティリスク管理に有用な情報であるため、ベンダーのセキュリティ情報サイトなどで確認しておく。
343+
4. セキュリティアドバイザリの調査
344+
- VEXなどの機械可読な形式のセキュリティアドバイザリは、まだ限られた一部のソフトウェアベンダーが提供している程度だが、特に脆弱性発見の頻度が高いソフトウェアについては提供者のセキュリティ情報サイトなどでアドバイザリまたはこれに相当する情報がないか確認する。
340345

341346
##### 5.4.5. リスクと留意事項
342347
<!-- 改善策実施に伴うリスク、例外対応、補足事項 -->
@@ -345,16 +350,20 @@ CPE名に比べて表記揺れの可能性が低く、ソフトウェア開発
345350
1. 脆弱性情報と照合するためのコンポーネントの識別情報について
346351
- 脆弱性情報との照合にコンポーネントの名前とバージョンを用いる場合、脆弱性情報に記載されているソフトウェアの名前の表記方法は、脆弱性情報の種類によって若干異なる場合がある。また、ツールから出力されたコンポーネントの名前にも表記揺れが生じうる(5.1節参照)。
347352
- 脆弱性情報との照合にコンポーネントのPURLを利用できる脆弱性データベースは、現状では一部に限られている(OSVはPURLに対応、NVDは未対応)。
348-
- いずれかのコンポーネントの実行時に動的に読み込まれるようなコンポーネントの情報はSBOMに記述されていない場合がある。
353+
- NVDなどで採用されているCPE名には表記揺れが生じうる。同じコンポーネントが、表記の異なる複数のCPE名で脆弱性情報に紐付けられている場合がある。
354+
- いずれかのコンポーネントの実行時に動的に読み込まれるようなコンポーネントの情報は、SBOMに記述されていない場合がある。
349355
<!-- また、PURLではバージョンがオプションとなっているが、これがないと脆弱性情報との一意な対応付けができないため、PURLが自動生成される場合もSBOMの全てのコンポーネントのPURLに(SBOM自体のバージョン属性やCPEにも)バージョンが記載されていることを確認する。それでも、バージョン記述の揺れによる照合ミスのリスクは残ることに留意すべき。-->
350356

351357
2. コンポーネントの提供者情報について
352358
- コンポーネントの名前と同様に、提供者名も表記揺れによって一貫性が保たれない場合がある(5.1節参照)。
353-
- コンポーネント(パッケージ)の提供者は、企業の買収や事業停止、個人の都合などによって、開発やサポートが停止していたり他者へ移っている場合がある。SBOMにEOL/EOS情報があるかの確認、アップデートや問い合わせ対応などの状況を見ておくことも、リスク管理の一環となる。
359+
- コンポーネント(パッケージ)の提供者は、企業の買収や事業停止、個人の都合などによって、開発やサポートが停止していたり他者へ移っている場合がある。そうした動向の定期的な確認も重要である。
360+
361+
3. コンポーネント間の依存関係について
362+
- SBOMに記述されたコンポーネント間の依存関係は、実際に動作しているソフトウェアにおける依存関係とは必ずしも一致しない。その理由としては、依存関係抽出の精度不足のほか、動的に読み込まれるコンポーネントに関する依存関係が記載されていない場合や、逆にソフトウェアの実行時に一部のコンポーネントが利用されない場合などがある。
363+
- 特に、ビルドツールでSBOMを生成できない場合、ソースコードやバイナリコードの解析によって生成されたSBOMにおけるコンポーネント間の依存関係には、高い精度や網羅性を期待し難い場合がある。
354364

355-
3. コンポーネント間の依存関係とセキュリティアドバイザリについて
356-
- SBOMに記述されたコンポーネント間の依存関係は、実際に動作しているソフトウェアにおける依存関係とは必ずしも一致しない。その理由としては、依存関係抽出の精度不足のほか、上記のコンポーネント情報と同様に動的に読み込まれるコンポーネントに関する依存関係が記述されていない場合や、逆にソフトウェアの実行時に一部のコンポーネントが利用されない場合などがある。
357-
- 膨大な数のコンポーネントで構成されたソフトウェアでは同時に大量の脆弱性が検出される場合がある一方、その大半に即時の対応を要するケースは少なく、適切なトリアージが必要である。しかし、まだ大半のコンポーネントについてVEXのような定型で機械可読なセキュリティアドバイザリが提供されていない現状では、脆弱性の影響有無や対処手段を一括で取得し管理することが容易でないため、過去に判断を保留したものを含めて見落としが無いか注意する必要がある。
365+
4. セキュリティアドバイザリについて
366+
- 膨大な数のコンポーネントで構成されたソフトウェアでは同時に大量の脆弱性が検出される場合がある一方、その大半に即時の対応を要するケースは相対的に少なく、適切なトリアージが必要である。しかし、まだ大半のコンポーネントについてVEXのような定型で機械可読なセキュリティアドバイザリが提供されていない現状では、脆弱性の影響有無や対処手段を一括で取得し管理することが容易でないため、過去に判断を保留したものを含めて脆弱性対応のためのアップデータの適用等に見落としが無いか注意する必要がある。
358367

359368

360369
#### 5.5 上流・下流間の情報統合と連携強化
17.9 KB
Loading

0 commit comments

Comments
 (0)