组件 (Pro)

在 DefectDojo 中,组件代表可能存在漏洞的第三方库、软件组件和模块。

组件视图

DefectDojo Pro 在侧边栏中提供了专门的组件表格视图。该视图显示每个组件的活动发现项、重复发现项和发现项总数。这些数字涵盖 DefectDojo 实例上的所有资产。

单个资产的组件可以在资产视图中查看。

组件表

组件表显示以下列:

  • 组件(Component) — 组件的名称,从扫描数据中填充。
  • 版本(Version) — 组件版本,从扫描数据中填充。
  • 活动发现项(Active Findings) — 与该组件关联的活动发现项数量。
  • 重复发现项(Duplicate Findings) — 与该组件关联的重复发现项数量。
  • 发现项总数(Total Findings) — 与该组件关联的所有发现项总数。

点击组件名称,或点击活动发现项、重复发现项、发现项总数对应的数值,将打开该字段相应的已筛选发现项列表。

表格中会显示一个 None 组件,其中列出所有未关联任何组件的发现项。

即使某个组件关联的所有发现项都已被缓解,已导入的组件仍会保留在表格中。当为某个特定组件导入发现项时,组件表会更新以准确反映新的发现项总数。

示例

从针对存在漏洞的 lodash 依赖项的应用执行的 Dependency-Check 扫描中导入的组件,可能会在表格中显示为:

ComponentVersionActive FindingsDuplicate FindingsTotal Findings
npm:lodash4.17.15315

点击 npm:lodash 会打开所有引用该组件的发现项列表。点击 3 会打开经筛选、仅显示活动发现项的相同列表。

添加组件

组件可以通过扫描导入进行解析,也可以通过手动编辑发现项来添加。一旦某个组件名称与某个发现项关联,组件表中就会自动添加相应的条目。如果该组件已经与 DefectDojo 中的其他发现项关联,活动发现项、重复发现项和发现项总数的统计数字将相应更新。

组件如何从扫描数据中解析

导入扫描时,解析器会根据扫描输出为每个发现项填充 组件名称(Component Name)组件版本(Component Version) 字段。组件表随后根据这些值构建。详细程度和命名规范取决于生成扫描的工具:

  • 软件成分分析(SCA)工具 通常报告软件包名称和确切版本。例如,OWASP Dependency-Check 会从其标识符中的 Package URL 派生组件信息——一个 pkg:npm/lodash@4.17.15 的 purl 会转换为 Component Name: npm:lodashComponent Version: 4.17.15
  • 容器和操作系统软件包扫描器,例如 Trivy、Anchore Grype 和 Anchore Engine,会报告受影响的操作系统或语言软件包——例如,Component Name: curlComponent Version: 7.68.0
  • 特定语言的依赖项扫描器,例如 npm Audit、pip-audit、bundler-audit、Retire.js、Govulncheck 和 OSV-Scanner,会根据各自生态系统的清单文件填充违规软件包及其版本。

专注于配置、基础设施或源代码逻辑的扫描器(例如 SAST 和 IaC 工具)通常不会填充组件字段,其发现项将显示在 None 组件下。

要手动添加或更改组件,请编辑发现项并直接设置 组件名称组件版本 字段。保存发现项后,组件表会立即更新。

更新组件

要更新组件名称或版本,必须更新与该组件关联的所有发现项的组件名称或组件版本字段。

移除组件

要从组件表中移除某个组件,必须更新与该组件关联的所有发现项,移除其组件名称和组件版本字段。如果某个组件关联的所有发现项都被删除,该组件也会被移除。

如果某个组件的所有发现项都已被缓解,该组件仍会保留在表格中,但其活动发现项数值将变为 0。