コンポーネント (Pro)
DefectDojoにおいて、コンポーネントは、脆弱性を含む可能性のあるサードパーティライブラリ、ソフトウェアコンポーネント、モジュールを表します。
コンポーネントビュー
DefectDojo Proには、サイドバーからアクセスできるコンポーネント専用のテーブルビューが含まれています。このビューには、各コンポーネントのアクティブな検出事項、重複した検出事項、検出事項の合計数が表示されます。これらの数値には、DefectDojoインスタンス上のすべてのアセットが含まれます。
個々のアセットのコンポーネントは、アセットビューで確認できます。
コンポーネントテーブル
コンポーネントテーブルには以下の列が表示されます。
- コンポーネント — スキャンデータから取得されるコンポーネントの名前。
- バージョン — スキャンデータから取得されるコンポーネントのバージョン。
- アクティブな検出事項 — コンポーネントに関連付けられたアクティブな検出事項の数。
- 重複した検出事項 — コンポーネントに関連付けられた重複した検出事項の数。
- 検出事項の合計数 — コンポーネントに関連付けられたすべての検出事項の合計数。
コンポーネント名、またはアクティブな検出事項、重複した検出事項、検出事項の合計数の値をクリックすると、それぞれのフィールドに対応する検出事項のフィルター済みリストが開きます。
テーブルにはNoneコンポーネントが表示され、これはどのコンポーネントにも関連付けられていないすべての検出事項を示します。
インポートされたコンポーネントは、関連付けられたすべての検出事項が緩和済みになった場合でもテーブルに残ります。特定のコンポーネントに対して検出事項がインポートされると、コンポーネントテーブルは新しい検出事項の合計を正確に反映するように更新されます。
例
脆弱なlodash依存関係を持つアプリケーションに対するDependency-Checkスキャンからインポートされたコンポーネントは、テーブル上で次のように表示される場合があります。
| Component | Version | Active Findings | Duplicate Findings | Total Findings |
|---|---|---|---|---|
| npm:lodash | 4.17.15 | 3 | 1 | 5 |
npm:lodashをクリックすると、このコンポーネントを参照するすべての検出事項のリストが開きます。3をクリックすると、アクティブな検出事項のみにフィルタリングされた同じリストが開きます。
コンポーネントの追加
コンポーネントは、スキャンのインポートから解析されるか、検出事項を手動で編集することで追加できます。コンポーネント名が検出事項に関連付けられると、対応するエントリが自動的にコンポーネントテーブルに追加されます。そのコンポーネントがDefectDojo内の他の検出事項に既に関連付けられている場合、アクティブな検出事項、重複した検出事項、検出事項の合計数の値がそれに応じて更新されます。
スキャンデータからのコンポーネントの解析方法
スキャンがインポートされると、パーサーはスキャン出力から各検出事項のコンポーネント名とコンポーネントバージョンフィールドに値を設定します。コンポーネントテーブルはこれらの値をもとに作成されます。詳細度と命名規則は、スキャンを生成したツールによって異なります。
- ソフトウェアコンポジション解析(SCA)ツールは通常、パッケージ名と正確なバージョンを報告します。例えば、OWASP Dependency-Checkは識別子内のPackage URLからコンポーネントを導出します。
pkg:npm/lodash@4.17.15というpurlはComponent Name: npm:lodash、Component Version: 4.17.15になります。 - コンテナおよびOSパッケージスキャナー(Trivy、Anchore Grype、Anchore Engineなど)は、影響を受けるOSまたは言語パッケージを報告します。例えば、
Component Name: curl、Component Version: 7.68.0のようになります。 - 言語固有の依存関係スキャナー(npm Audit、pip-audit、bundler-audit、Retire.js、Govulncheck、OSV-Scannerなど)は、それぞれのエコシステムのマニフェストから問題のあるパッケージとバージョンを設定します。
設定、インフラストラクチャ、またはソースコードのロジックに焦点を当てたスキャナー(SASTやIaCツールなど)は、通常コンポーネントフィールドに値を設定せず、それらの検出事項はNoneコンポーネントの下に表示されます。
コンポーネントを手動で追加または変更するには、検出事項を編集してコンポーネント名とコンポーネントバージョンフィールドを直接設定します。検出事項が保存されるとすぐに、コンポーネントテーブルが更新されます。
コンポーネントの更新
コンポーネント名またはバージョンを更新するには、そのコンポーネントに関連付けられたすべての検出事項のコンポーネント名またはコンポーネントバージョンフィールドを更新する必要があります。
コンポーネントの削除
コンポーネントテーブルからコンポーネントを削除するには、そのコンポーネントに関連付けられたすべての検出事項を更新して、コンポーネント名とコンポーネントバージョンフィールドを削除する必要があります。また、関連付けられたすべての検出事項が削除された場合も、コンポーネントは削除されます。
コンポーネントのすべての検出事項が緩和済みになった場合、コンポーネントはテーブルに残りますが、そのアクティブな検出事項の値は0に設定されます。