组件 (Pro)
在 DefectDojo 中,组件代表可能存在漏洞的第三方库、软件组件和模块。
组件视图
DefectDojo Pro 在侧边栏中提供了专门的组件表格视图。该视图显示每个组件的活动发现项、重复发现项和发现项总数。这些数字涵盖 DefectDojo 实例上的所有资产。
单个资产的组件可以在资产视图中查看。
组件表
组件表显示以下列:
- 组件(Component) — 组件的名称,从扫描数据中填充。
- 版本(Version) — 组件版本,从扫描数据中填充。
- 活动发现项(Active Findings) — 与该组件关联的活动发现项数量。
- 重复发现项(Duplicate Findings) — 与该组件关联的重复发现项数量。
- 发现项总数(Total Findings) — 与该组件关联的所有发现项总数。
点击组件名称,或点击活动发现项、重复发现项、发现项总数对应的数值,将打开该字段相应的已筛选发现项列表。
表格中会显示一个 None 组件,其中列出所有未关联任何组件的发现项。
即使某个组件关联的所有发现项都已被缓解,已导入的组件仍会保留在表格中。当为某个特定组件导入发现项时,组件表会更新以准确反映新的发现项总数。
示例
从针对存在漏洞的 lodash 依赖项的应用执行的 Dependency-Check 扫描中导入的组件,可能会在表格中显示为:
| Component | Version | Active Findings | Duplicate Findings | Total Findings |
|---|---|---|---|---|
| npm:lodash | 4.17.15 | 3 | 1 | 5 |
点击 npm:lodash 会打开所有引用该组件的发现项列表。点击 3 会打开经筛选、仅显示活动发现项的相同列表。
添加组件
组件可以通过扫描导入进行解析,也可以通过手动编辑发现项来添加。一旦某个组件名称与某个发现项关联,组件表中就会自动添加相应的条目。如果该组件已经与 DefectDojo 中的其他发现项关联,活动发现项、重复发现项和发现项总数的统计数字将相应更新。
组件如何从扫描数据中解析
导入扫描时,解析器会根据扫描输出为每个发现项填充 组件名称(Component Name) 和 组件版本(Component Version) 字段。组件表随后根据这些值构建。详细程度和命名规范取决于生成扫描的工具:
- 软件成分分析(SCA)工具 通常报告软件包名称和确切版本。例如,OWASP Dependency-Check 会从其标识符中的 Package URL 派生组件信息——一个
pkg:npm/lodash@4.17.15的 purl 会转换为Component Name: npm:lodash、Component Version: 4.17.15。 - 容器和操作系统软件包扫描器,例如 Trivy、Anchore Grype 和 Anchore Engine,会报告受影响的操作系统或语言软件包——例如,
Component Name: curl、Component Version: 7.68.0。 - 特定语言的依赖项扫描器,例如 npm Audit、pip-audit、bundler-audit、Retire.js、Govulncheck 和 OSV-Scanner,会根据各自生态系统的清单文件填充违规软件包及其版本。
专注于配置、基础设施或源代码逻辑的扫描器(例如 SAST 和 IaC 工具)通常不会填充组件字段,其发现项将显示在 None 组件下。
要手动添加或更改组件,请编辑发现项并直接设置 组件名称 和 组件版本 字段。保存发现项后,组件表会立即更新。
更新组件
要更新组件名称或版本,必须更新与该组件关联的所有发现项的组件名称或组件版本字段。
移除组件
要从组件表中移除某个组件,必须更新与该组件关联的所有发现项,移除其组件名称和组件版本字段。如果某个组件关联的所有发现项都被删除,该组件也会被移除。
如果某个组件的所有发现项都已被缓解,该组件仍会保留在表格中,但其活动发现项数值将变为 0。