@@ -370,25 +370,30 @@ SBOMの信頼性と改ざん耐性を確保するために、以下の改善策
370370
371371- コンポーネント間の依存関係は、パッケージ生成時に想定されるすべての利用事例に対応した記述がなされるべきである
372372 - ライブラリパッケージなどのような事例では、サプライチェーン下流で一部関数が使用されない可能性がある場合でも、パッケージに含まれるすべてのソフトウェアについてコンポーネント間の依存関係や関連性を記述する必要がある
373- - アプリケーションBuild時など、生成されるオブジェクトファイルに含まれないソフトウェアが取捨された場合 、SBOM記述としては生成結果に含まれるコンポーネントに絞り込まれた記述となることが望ましい
373+ - アプリケーションBuild時など、Build時に用意したパッケージに存在しても、生成されるオブジェクトファイルに含まれないソフトウェアが存在するなど、パッケージ内容の取捨選択が行われた場合 、SBOM記述としては生成結果に含まれるコンポーネントに絞り込まれた記述となることが望ましい
374374 - 脆弱性情報などとの突合せにより、該当・非該当を判断する場合、呼び出されないコード、含まれないデータなどに対して、擬陽性を示すことを抑止するために、SBOM記述と生成されたオブジェクトファイルの内容を合致させる必要がある
375375
376376##### 5.9.2. 課題の詳細
377377
378- - SBOMに記述される依存関係は、パッケージによって記述される項目・内容が変化することを前提にしなければならない
379- - 汎用のソフトウェア部品として生成されたパッケージには、パッケージを受け取った側が利用しないソフトウェアが含まれ得る
380- - パッケージを受け取った側が、そのパッケージを用いてアプリケーションソフトウェアなどを生成する場合、Buildオプションなど追加定義を与えることが一般的であるため、依存関係に変化が生じ得る
381- - ソースコードとパッケージ両方から依存関係を取得することで、重複や冗長な情報が混在し、全体の依存関係把握が難しくなる
382- - SBOMを受け取った側が、SBOMに記載された依存関係を検証する際、実際にパッケージを用いているアプリケーションソフトウェアの構成に正確に沿った検証を行うことが望ましく、そのためには、パッケージ生成時だけではなくアプリケーションソフトウェア生成時のBuildオプションなどを反映することが望ましい
383- - ロックファイルやパッケージマネージャーのログだけで解析した場合、最新の依存関係や推移的な依存関係が完全に反映されない場合がある
384- - 解析手法に統一性や自動化が不足しており、正確な依存関係抽出と整合性の維持に手動の補完が必要となっている
385- - 複数のパッケージに含まれる各ライブラリと、アプリケーションプログラムを生成するBuildシステム、相互でSBOM情報を取得・再生成できる構成となっていなければ、生成されるオブジェクトファイルに対する正確なコンポーネント情報、コンポーネント間の依存情報が生成できない
386- - アプリケーションソフトウェアとして生成されたオブジェクトファイルに対するSBOMと、動的にリンクを行うダイナミックリンクライブラリ、動的にパッケージを読み込むPlug-inなどの各パッケージが提供するSBOM情報を、アプリケーションソフトウェアの実稼働に即して正確に再構成しなければ、情報の欠落が生じ得る
387-
388-
378+ - パッケージの内容によっては、SBOMに記述される依存関係が、パッケージをサプライチェーン内で授受する場合やパッケージのセットを汎用ディストリビューションとして授受する時点での記述内容と、同パッケージを用いてアプリケーションソフトウェアをBuildする際、アプリケーションソフトウェアとしての実行時、クラウド環境などにおけるサービス提供タイミングなど、それぞれの時点で変化し得ることを前提にしなければならない
379+ - パッケージの生成段階と利用段階それぞれにおける依存関係
380+ - 汎用のソフトウェア部品として生成されたパッケージには、パッケージを受け取った側が利用しないソフトウェアが含まれ得る
381+ - パッケージを受け取った側が、そのパッケージを用いてアプリケーションソフトウェアなどを生成する場合、Buildオプション・リンク情報など追加定義を与えることが一般的であるため、依存関係に変化が生じ得る
382+ - ダイナミックリンク機構あるいはアプリケーションソフトウェアがPlug Inとして外部バイナリを取り込む機構を持つ場合、さらには複数のアプリケーションが密接に通信処理を実施しながら一体となってサービスを提供する場合、など、実処理段階で依存関係に変化が生じる場合も存在する
383+ - パッケージ生成ツールのSBOM品質
384+ - パッケージ生成ツール・パッケージマネジメントシステムが保有する依存関係は、当該のパッケージに含まれるソフトウェア全てが利用される前提で依存関係を管理することが期待されているが、パッケージ内の構成に依っては循環参照などが生じたとしても、そのまま依存関係を記述されることとなり、後段の解析において障害となりうる
385+ - パッケージ生成ツールは、ソースコードを解析して依存関係を導出するかは、ツールに依存し、場合によってはソースコード以外の開発者が与えたドキュメント情報を引き写しているだけである可能性がある
386+ - パッケージ・パッケージに付随するSBOMを受け取った側が、ソースコードとパッケージ両方から依存関係を取得することで、重複や冗長な情報が混在し、全体の依存関係把握が難しくなる
387+ - パッケージ受領者による依存関係の確認
388+ - 前述のように、脆弱性情報などとの突合せを考慮すると、依存関係についてアプリケーションソフトウェアの構成、動的な依存関係の把握を、パッケージに同梱されている依存関係記述とは別個に取得することが望ましい
389+ - SBOMを受け取った側が、SBOMに記載された依存関係を検証する際、実際にパッケージを用いているアプリケーションソフトウェアの構成に正確に沿った検証を行うことが望ましく、そのためには、パッケージ生成時だけではなくアプリケーションソフトウェア生成時のBuildオプションなどを反映することが望ましい
390+ - 解析手法に統一性や自動化が不足しており、正確な依存関係抽出と整合性の維持に手動の補完が必要となっている
391+ - 複数のパッケージに含まれる各ライブラリと、アプリケーションプログラムを生成するBuildシステム、相互でSBOM情報を取得・再生成できる構成となっていなければ、生成されるオブジェクトファイルに対する正確なコンポーネント情報、コンポーネント間の依存情報が生成できない
392+ - アプリケーションソフトウェアとして生成されたオブジェクトファイルに対するSBOMと、動的にリンクを行うダイナミックリンクライブラリ、動的にパッケージを読み込むPlug-inなどの各パッケージが提供するSBOM情報を、アプリケーションソフトウェアの実稼働に即して正確に再構成しなければ、情報の欠落が生じ得る
393+
394+ - ロックファイルやパッケージマネージャーのログだけで解析した場合、最新の依存関係や推移的な依存関係が完全に反映されない場合がある
389395- パッケージ間の依存関係は、一般に、パッケージをBuild/生成する際の、ソースコード、コンパイル情報から導き出される
390396- しかしながら、ソースコード、およびソースコードが参照するライブラリ群には、最終的に生成されるアプリケーションにおいては利用されない領域が存在し、それら利用されない領域への依存関係・利用されない領域から参照される依存関係、などを擬陽性として排除し、依存関係を軽量化することが一般に行われる
391- - 他方、パッケージマネジメントシステムが保有する依存関係は、当該のパッケージに含まれるソフトウェア全てが利用される前提で依存関係を管理することが期待されている
392397- 結果として、完璧な依存関係管理を実施した場合でも、最終アプリケーションを構成するソフトウェア情報・Build/生成情報を用いて生成する依存関係と、パッケージマネジメントシステムが保有する依存関係情報を統合することで得られる依存関係には、差異・過剰な記述、などが生じる余地が存在する
393398
394399##### 5.9.3. 改善策
0 commit comments