发现项 (Open Source)
组织 → 资产 → 测试活动 → 测试 → 发现项
概述
发现项 代表产品层级结构中的最低层级,单个漏洞在此处被跟踪和管理,也是 DefectDojo 用于标准化和指导各类安全工具报告与修复流程的主要方式。无论漏洞是由 SonarQube、Acunetix 报告,还是由您团队的自定义工具报告,发现项都能让您以相同的方式管理每一个漏洞。
发现项的示例包括:
- Cookie 未标记为 HttpOnly
- 版本过时(PHP)
- 带外代码执行(PHP)
- 版本过时(MySQL)
- 检测到备份源代码
- 盲跨站脚本攻击
除了存储漏洞数据和提供修复框架之外,DefectDojo 还通过以下方式增强您的发现项:
- 自动为发现项添加相关的 EPSS 分数,以描述其可利用性
- 自动将安全工具的严重程度指标转换为每个发现项的严重程度评分,并根据您资产的 SLA 配置为该发现项赋予相应的 SLA。有关 SLA 配置的更多信息,请点击此处。
总体而言,发现项旨在与产品层级结构协同工作,以规范您的工作,并为每个资产应用一致的方法。
访问发现项
发现项可通过侧边栏访问。子菜单提供了对打开的发现项和已关闭的发现项、所有发现项(无论打开或关闭状态)、风险已接受的发现项以及发现项模板的访问入口。单个发现项也可以从包含它的测试内部访问。

权限
每个发现项都属于某个测试,这使 DefectDojo 能够保留最初发现该漏洞的扫描或评估记录。
由于发现项属于测试,对发现项的访问权限取决于用户对包含该测试的资产的访问权限。测试没有独立的访问控制列表。
发现项视图
发现项视图包含多种表格,可帮助您一目了然地了解发现项的状态。这些表格包括:
- 概览
- ID:该发现项的唯一 ID 编号。
- 严重程度:该发现项的严重程度评级,系统会自动应用。
- 如上所述,DefectDojo 会自动将安全工具的严重程度指标转换为每个发现项的严重程度评分,并根据您资产的 SLA 配置为该发现项赋予相应的 SLA。
- SLA:该发现项预计应解决的到期日期。
- 状态:该发现项的状态(例如活动、已验证、误报、重复、超出范围以及正在进行缺陷审查)。
- 发现项类型:该发现项是静态(SAST)还是动态(DAST)。
- 发现日期:该发现项被发现的日期。
- CWE:该发现项的 CWE 分类。
- 漏洞 ID:与该发现项相关联的安全公告中的漏洞 ID(例如 CVE 或其他来源)。
- 发现工具:揭示该发现项的工具。
- 相似发现项:同一资产内其他并非完全重复、但在漏洞 ID、CWE、file_path、行号等方面具有相似值的发现项。
- 导入历史:在任何测试中创建/关闭/重新激活该发现项的导入/重新导入记录列表。
- 易受攻击的端点/系统:该发现项所揭示的存在漏洞的端点/系统。
- 描述:该发现项的描述(根据发现项类型自动添加,或手动创建)。
- 缓解措施:建议的缓解步骤。
- 影响:未解决该发现项可能造成的潜在影响。
- 重现步骤:重现该发现项的步骤。
- 严重程度说明:关于为何将某一严重程度评级关联到该发现项的文字说明。
- 参考资料:用于交叉引用第三方扫描工具对该发现项具体描述的 URL。例如,参考资料可以是指向发现项目录中相关条目的链接,或单个公告 URL。
- 备注:用户就该发现项留下的备注。将某条备注标记为私密后,该备注将不会包含在任何包含所选发现项的已生成报告中。
发现项数据
发现项需要以下元数据: 标题 日期 严重程度 描述
除了与发现项视图中的表格相对应的元数据外,可选的元数据字段还包括:
- 组:包含所选发现项的发现项组。
- CVSS3/CVSS4 向量和评分:所选发现项的 CVSS3 和 CVSS4 向量及评分。
- 请求和响应对:客户端发送的消息及服务器对该请求回复的副本。
- 待添加的端点:可能受所选发现项影响、但尚未反映在前述系统/端点列表中的易受攻击端点。
- EPSS 分数和百分位:该 CVE 的 EPSS 分数和百分位。
- KEV 添加日期:该发现项被添加到 KEV 目录的日期。
- 修复可用性和版本:定义该漏洞是否有可用的修复方案,以及实施该修复的受影响组件版本。
- 发起缺陷审查的用户:记录是谁针对该缺陷发起了缺陷审查请求。
- 行号:攻击向量的源代码行号。
- 文件路径:包含该缺陷的已识别文件。
- 组件名称和版本:受影响组件的名称和版本。
- 来自工具的唯一 ID:源工具提供的漏洞技术 ID。
- 来自工具的漏洞 ID:源工具提供的非唯一技术 ID。
- SAST 源对象、行号和文件路径:攻击向量的源对象、行号和文件路径。
- SAST 汇聚对象:攻击向量的汇聚对象。
- 出现次数:当扫描器发现并聚合多个漏洞时,源工具中记录的出现次数。
- 发布日期:该发现项的发布日期。
- 服务:受所选发现项影响的关联服务(资产内自成一体的功能单元)。填写该字段后,它将被纳入去重匹配(即,服务字段相同的发现项将会被去重)。
- 计划修复日期和版本:计划修复该发现项的日期,以及实施修复的受影响组件版本。
- 修复工作量:修复该发现项所需的工作量级别(例如低、中或高)。
- 标签:已添加到该发现项的任何标签。
具体可用的元数据取决于揭示该发现项的解析器/扫描器。有些扫描器仅提供标题和严重程度等基本信息,而另一些则包括 CVSS 向量、易受攻击的组件、端点、请求/响应对以及其他特定于该扫描器的元数据。
这些元数据可改善您整个安全项目中的筛选、报告和优先级排序,从而实现长期跟踪和趋势分析。有关更多详情和元数据说明,请参见此处。
去重
DefectDojo 具备去重功能,可帮助识别和管理代表同一底层漏洞的发现项。当从一个或多个工具导入扫描结果时,DefectDojo 会使用可配置的匹配逻辑来识别代表同一漏洞的发现项。
去重功能可防止同一漏洞在被相同或不同的扫描器反复发现时多次出现,从而使修复历史能够持续关联到单个发现项。
有关去重的更多信息,请参见此处。
重新导入
DefectDojo 的重新导入功能允许在导入新的扫描结果时更新发现项。重新导入扫描时,DefectDojo 会将新导入的结果与现有发现项进行比对,并更新匹配的记录,而不是创建全新的记录。这样可以保留诸如状态变更、修复历史、评论和所属信息等有价值的上下文,从而在多个测试周期中持续记录发现项的生命周期。
有关重新导入功能的更多信息,请参见此处。
风险接受
风险接受是一种可应用于发现项的特殊状态,用于正式记录并落实“确认发现项但不立即修复”这一决定。
有关风险接受的更多信息,请参见此处。
状态
在 DefectDojo 中创建的每个发现项都有一个状态,用于传达相关信息,并帮助您的团队跟踪问题解决的进度。
有关状态的更多信息,请参见此处。
使用发现项
创建发现项
虽然大多数发现项都是通过扫描导入和集成自动生成的,但 DefectDojo 也支持手动创建发现项。手动发现项适用于跟踪通过渗透测试、架构审查、合规评估、漏洞赏金计划、顾问项目或其他不产生扫描器输出的活动所识别出的漏洞和安全问题。
要手动创建发现项:
- 导航到您希望手动添加发现项的测试,点击 + 加号,然后点击 新建发现项。

这将打开“新建发现项”表单,您可以在其中填写与发现项相关的任何信息。
选择 添加另一个发现项 以手动添加另一个发现项,或选择 完成 以结束手动创建发现项的流程。
该发现项现在将出现在原始测试所包含的发现项列表中。
需要注意的是,通过顶部栏手动添加发现项,将自动创建一个临时测试活动和测试来容纳该新发现项,而不会将其添加到当前正在查看的测试中(见下图)。这是因为顶部栏针对的是整个资产。如果您希望手动将发现项添加到某个特定的、已存在的测试中,最好按照上述步骤 1-3 所述,在该测试内部进行操作。

编辑发现项
⋮ 三点菜单
发现项旁边的 ⋮ 三点菜单包含以下功能:
- 查看:打开并查看该发现项。
- 编辑:编辑该发现项。
- 复制:创建该发现项的副本。该副本可以保存到相应测试活动内的任意测试中。
- 请求同行评审:启动同行评审流程,并将发现项的状态更改为“审查中”。有关同行评审的更多信息,请参见此处。
- 触碰发现项:将在发现项的历史记录中记录与该发现项的交互。
- 将发现项设为模板:将根据所选发现项自动创建一个发现项模板。
- 将模板应用于发现项:允许将已有的发现项模板应用到某个发现项。
- 关闭发现项:将启动关闭该发现项的流程。
- 添加风险接受:将启动风险接受流程。更多信息请参见此处。
- 查看历史记录:显示所选发现项的历史记录。
- 删除:删除所选发现项。
为发现项附加文件
您可以为任何发现项附加文件,以提供直观的背景信息 — 例如漏洞实际发生的截图,或概念验证图片。
支持的文件类型包括:
.txt .pdf .json .xml .csv .yml .png .jpeg
.sarif .xlsx .doc .html .js .nessus .zip .fpr要为发现项附加文件:
- 打开您想要附加文件的发现项。
- 打开操作菜单(发现项右上角的 ☰ 按钮),然后点击“管理文件”。

- 在“添加文件”页面上,为文件输入标题,并从计算机中选择文件。您一次最多可以添加三个文件;如有需要,可保存后返回继续添加。

- 点击 保存。
该文件随后将列示在发现项的 文件 面板中。图片文件将显示为缩略图:

批量编辑发现项
发现项可以从发现项列表中批量编辑,例如通过侧边栏访问的“所有发现项”表格,或特定测试内的发现项表格。
有关如何批量编辑发现项的更多信息,请参见此处。
关闭发现项
一旦某个发现项的处理工作完成,您可以在该发现项的 ⋮ 三点菜单或 ☰ 操作菜单中点击 关闭发现项 来手动关闭它。此外,如果重新导入 DefectDojo 的扫描结果中不包含此前记录的某个发现项,该发现项将自动关闭。
如果您不希望任何发现项被关闭,可以在重新导入时禁用此行为:
- 如果使用界面,请取消勾选“关闭旧发现项”复选框
- 如果使用 API,请将 close_old_findings 设置为 False
删除发现项
可以从发现项的 ⋮ 三点菜单或 ☰ 操作菜单中删除该发现项。此操作无法撤销。
出于审计目的,建议关闭已修复的发现项,而不是将其删除。
发现项组
发现项组 使您能够将多个相关发现项视为单一逻辑单元,以便进行分类处理、报告和修复协调。
例如,一次扫描可能会在不同端点上产生 10 个 SQL 注入发现项。您无需单独管理每一个,而是可以将它们归入一个代表整体 SQL 注入问题的发现项组。
发现项组并不会取代各个独立的发现项。每个发现项依然拥有各自的严重程度、状态、元数据、评论和修复历史。发现项组只是在其所包含的发现项之上,提供了一个额外的组织层级。
访问发现项组
发现项组可通过侧边栏访问。子菜单提供了对打开和已关闭的发现项组,以及所有发现项组(无论是否处于打开状态)的访问入口。

创建发现项组
发现项组既可以手动创建,也可以自动创建。
需要注意的是,发现项组只能由单个测试内所包含的发现项创建。来自不同测试、测试活动或产品的发现项无法添加到同一个发现项组中。
手动发现项组
要手动执行发现项组操作:
- 导航到某个测试内的发现项列表。
- 点击相应的复选框,选择您希望添加到发现项组的发现项。
- 点击 组 复选框。
- 点击您希望执行的相应操作。
- 创建:创建一个包含所选发现项的发现项组。
- 添加至:将所选发现项添加到已有的发现项组中。
- 从所有组中移除:将所选发现项从其此前所属的任何发现项组中移除。
- 分组依据:根据所选选项(例如组件名称、文件路径、发现项标题等)对所选发现项进行分组
- 点击 提交。

请注意,在“所有发现项”列表中选择发现项时,唯一可执行的操作是将所选发现项从任何发现项组中移除。这是因为,如前所述,发现项组只能由单个测试内所包含的发现项创建。
自动发现项组
在导入扫描结果时,“分组依据”功能可以根据所选的分组方式自动创建发现项组。当某个扫描器生成大量应统一管理的相关发现项时,该功能非常实用。
与之相邻的 为所有发现项创建发现项组 复选框具有两项功能:
- 勾选:为每个导入的发现项创建一个发现项组,即使该发现项是该组中唯一的成员。
- 取消勾选:仅当确实存在多个需要归为一组的发现项时,才创建发现项组。

如果在导入过程中未从“分组依据”下拉菜单中选择任何选项,则不会进行分组。
如果发现项中未填写分组条件(例如组件名称、漏洞 ID 等),则不会为其创建分组,也不会将其添加到已有的发现项组中。
如果导入的一次扫描揭示了 10 个未分组的发现项,而后重新导入同一扫描并对发现项进行了分组,则最初的这 10 个发现项不会被添加到该发现项组中(即,该发现项组将仅包含重新导入时产生的 10 个发现项,而不包括最初及后续导入产生的 10 个发现项)。
发现项模板
发现项模板 允许用户为常见的、经常被报告的漏洞和安全问题创建可复用的模板。模板可以包含标准化的信息,例如标题、描述、影响、重现步骤、缓解措施、参考资料以及其他发现项元数据。
发现项模板在用户需要反复手动创建发现项、并希望避免每次都重新录入相同的支持信息时最为实用。
访问发现项模板
发现项模板位于侧边栏的“发现项”子菜单中。

创建发现项模板
在“发现项模板”视图右上角点击 + 加号按钮即可创建发现项模板。
随后打开的页面提供了在使用某个发现项模板时,将应用于发现项的元数据概览。
您也可以在发现项的 ⋮ 三点菜单中点击 将发现项设为模板,以某个已有发现项为基础创建新的发现项模板。
应用发现项模板
在所选发现项的 ⋮ 三点菜单中点击 将模板应用于发现项 按钮,即可将发现项模板应用到该发现项。

随后打开的页面将允许您选择要应用于该发现项的模板,并选择是保留、替换,还是将发现项的元数据与模板的元数据进行合并。
报告
DefectDojo 的报告构建器允许您通过一组内容小部件组装自定义报告、运行该报告,并导出结果(例如将其打印为 PDF)。自定义报告可以汇总您希望与外部受众分享的发现项或端点,并可以包含品牌信息和样板文字。
有关 DefectDojo 报告构建器的更多信息,请参见此处。
导出发现项
显示发现项列表或测试活动列表的页面,在右上角的下拉菜单中提供 CSV 和 Excel 导出选项。
在任意发现项列表页面中,打开右上角的下拉菜单,即可将可见的发现项导出为 CSV 或 Excel 文件。在测试活动列表页面上使用同样的下拉菜单,也可以将测试活动列表导出为 CSV 或 Excel 文件。