漏洞报告
- Tier: Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
漏洞解决活动图标的可用性由功能开关控制。 更多信息请查看历史记录。
漏洞报告提供了代码库中发现的安全漏洞的统一视图。按严重性、报告类型、扫描器(仅限项目)和其他属性对漏洞进行排序,以确定哪些问题需要优先处理。通过状态指示器和活动图标跟踪漏洞的生命周期,这些图标显示修复进度。
访问每个漏洞的详细信息,包括通用漏洞评分系统(CVSS)分数和文件位置(如可用)。筛选和分组相似的漏洞,以便系统性地处理它们。
在 GitLab.com 上,漏洞在最后一次更新后一年会被归档。更多详情请参见 漏洞归档。
概览请参见 漏洞管理 - 高级安全测试。
漏洞报告内容
报告包含默认分支的数据,显示所有成功安全扫描作业的累计结果。扫描结果在作业完成后或流水线被手动作业阻塞时出现。
项目和组的漏洞报告包含:
- 按严重性级别统计的漏洞总数。
- 常见漏洞属性的筛选器。
- 每个漏洞的详细信息,以表格形式呈现。
对于某些漏洞,详细信息包含指向默认分支中相关文件和行号的链接。对于 CVE 漏洞,您还可以在漏洞报告中查看 KEV 状态、CVSS 和 EPSS 分数以及可访问性信息(Beta)。关于安全分数的更多详情,请参见 漏洞风险评估数据。
对于项目,漏洞报告还包含:
- 时间戳显示默认分支最后一次更新的时间,包含指向最新流水线的链接。针对非默认分支运行的流水线不会更新时间戳。
- 最近一次流水线中发生的失败次数。选择失败通知以查看流水线页面的 Failed jobs 标签页。
活动 列包含图标,表示该行漏洞执行的活动(如有):
- 问题 :指向为漏洞创建的问题的链接。更多信息请参见 为漏洞创建 GitLab 问题。
- 合并请求 :指向为漏洞创建的合并请求的链接。更多信息请参见 通过合并请求解决漏洞。
- 勾选圆圈 :漏洞已修复。
- 误报 :扫描器确定此漏洞为误报。
- 解决方案 :表示漏洞有可用解决方案。
- 漏洞解决 :表示漏洞有可用的 AI 解决方案。
要打开为漏洞创建的问题,将鼠标悬停在 活动 条目上,然后选择链接。问题图标( )表示问题的状态。如果启用了 Jira 问题支持,活动 条目中找到的问题链接将指向 Jira 中的问题。与 GitLab 问题不同,Jira 问题的状态不会显示在 GitLab UI 中。
当漏洞源自多项目流水线设置时,此页面显示源自所选项目的漏洞。
查看漏洞报告
查看漏洞报告以列出项目或组中的所有漏洞。
先决条件:
- 您必须拥有项目或组的至少 Developer 角色。
查看漏洞报告:
- 在左侧边栏,选择 Search or go to 并找到您的项目或组。
- 选择 Secure > Vulnerability report。
筛选漏洞
您可以在漏洞报告中筛选漏洞,以便更高效地进行分类处理。
可按以下条件筛选:
- 状态:漏洞的当前状态:需要分类处理、已确认、已忽略或已解决。更多详情请参见 漏洞状态值。 已忽略的漏洞可按忽略原因一起或单独筛选。
- 严重性:漏洞的严重性值:严重、高、中、低、信息、未知。
- 报告类型:检测漏洞的报告类型,例如 SAST 或容器模糊测试。更多详情请参见 报告类型筛选器。
- 扫描器:识别漏洞的特定扫描器。更多详情请参见 扫描器筛选器。
- 活动:漏洞的附加属性,例如漏洞是否有问题、合并请求或解决方案可用。更多详情请参见 活动筛选器。
- 标识符:漏洞的标识符(需要 高级漏洞管理)。无高级漏洞管理时,仅限漏洞数量不超过 20,000 的项目和组可用)。
- 项目:筛选特定项目中的漏洞(仅组可用)。更多详情请参见 项目筛选器。
- 可访问性:基于漏洞是否可访问进行筛选:是、未找到、不可用。更多详情请参见 可访问性筛选器。
筛选漏洞
筛选漏洞报告以专注于漏洞的子集。
筛选漏洞列表:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Secure > Vulnerability report。
- 可选。要移除默认筛选器,选择 Clear( )。
- 在漏洞列表上方,选择筛选栏。
- 在出现的下拉列表中,选择要筛选的属性,然后从下拉列表中选择值。
- 在筛选字段外选择。漏洞严重性总数和匹配的漏洞列表将更新。
- 要按多个属性筛选,重复前三个步骤。多个属性通过逻辑 AND 连接。
报告类型筛选器
您可以根据检测漏洞的报告类型进行筛选。默认情况下,漏洞报告列出所有报告类型的漏洞。
使用 手动添加 属性筛选手动添加的漏洞。
扫描器筛选器
对于项目,您可以根据检测漏洞的扫描器进行筛选。默认情况下,漏洞报告列出所有扫描器的漏洞。关于每个可用扫描器的详情,请参见 安全扫描工具。
项目筛选器
项目筛选器的内容因视图而异:
- Security Center:仅您 添加到个人 Security Center 的项目。
- 组:组中的所有项目。
- 项目:不适用。
活动筛选器
活动筛选器的行为与其他筛选器不同。您只能在每个类别中选择一个值。要移除筛选器,从活动筛选器下拉列表中选择要移除的筛选器。
使用活动筛选器时的选择行为:
- 活动
- 所有活动:具有任何活动状态的漏洞(等同于忽略此筛选器)。选择此项会取消选择所有其他活动筛选器选项。
- 检测
- 仍被检测到(默认):在
default分支的最新流水线扫描中仍被检测到的漏洞。 - 不再被检测到:在
default分支的最新流水线扫描中不再被检测到的漏洞。
- 仍被检测到(默认):在
- 问题
- 有相关问题:具有一个或多个关联问题的漏洞。
- 无相关问题:没有关联问题的漏洞。
- 合并请求
- 有相关合并请求:具有一个或多个关联合并请求的漏洞。
- 无相关合并请求:没有关联合并请求的漏洞。
- 解决方案可用
- 有解决方案:具有可用解决方案的漏洞。
- 无解决方案:没有可用解决方案的漏洞。
- GitLab Duo (AI):
- 漏洞解决可用:具有可用 AI 解决方案的漏洞。
- 漏洞解决不可用:没有可用 AI 解决方案的漏洞。
GitLab Duo (AI) 筛选器在以下情况下可用:
- Security Center 漏洞报告:Security Center 中任何项目的 GitLab Duo 开关已开启。
- 组漏洞报告:对于该组,GitLab Duo 功能 设置为 默认开启。
- 项目漏洞报告:对于该项目,GitLab Duo 开关已开启。
可访问性筛选器
对于组和项目,您可以根据 可访问性值 筛选漏洞。默认情况下,漏洞报告列出具有任何可访问性值的漏洞。
此筛选器需要 高级漏洞管理。
分组漏洞
您可以在漏洞报告页面分组漏洞,以便更高效地进行分类处理。
可按以下条件分组:
- 状态
- 严重性
- 报告类型
- 扫描器
- OWASP top 10 2017
- OWASP top 10 2021(需要 高级漏洞管理)
分组漏洞
分组漏洞:
- 在左侧边栏,选择 Search or go to 并找到您的项目或组。
- 选择 Secure > Vulnerability report。
- 从 Group By 下拉列表中选择一个分组。
漏洞根据所选分组进行分组。每个分组处于折叠状态,组名旁边显示该组的漏洞总数。要查看每个分组中的漏洞,选择组名。
查看漏洞详情
要查看漏洞的更多详情,选择漏洞的 Description。将打开 漏洞详情页。
更改漏洞状态
在分类处理漏洞时,您可以更改其状态,包括忽略漏洞。
当漏洞被忽略时,审计日志会记录谁忽略了漏洞、何时忽略以及忽略原因。您无法删除漏洞记录,因此会保留永久记录。
先决条件:
- 您必须拥有项目的至少 Maintainer 角色。
admin_vulnerability权限在 GitLab 17.0 中已从 Developer 角色 移除。
更改漏洞状态:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Secure > Vulnerability report。
- 要选择:
- 一个或多个漏洞,选择每个漏洞旁边的复选框。
- 页面上的所有漏洞,选择表格标题中的复选框。
- 在 Set status 下拉列表中,选择所需状态。
- 如果选择了 Dismiss 状态,在 Set dismissal reason 下拉列表中选择所需原因。
- 在 Add a comment 输入框中,您可以提供注释。对于 Dismiss 状态,注释是必需的。
- 选择 Change status。
所选漏洞的状态将更新,漏洞报告的内容将刷新。
更改或覆盖漏洞严重性
此功能的可用性由功能开关控制。 更多信息请查看历史记录。
在某些情况下,您可能需要调整检测到的漏洞的严重性,以更好地反映您组织的优先级。例如,扫描器可能报告较低的严重性,但您可能根据环境或设置认为它更关键。此功能允许您覆盖扫描器分配的默认严重性。
先决条件:
- 您必须拥有项目的至少 Maintainer 角色或
admin_vulnerability权限。
手动覆盖漏洞严重性:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 转到 Secure > Vulnerability report。
- 选择漏洞:
- 要选择单个漏洞,选择每个漏洞旁边的复选框。
- 要选择页面上的所有漏洞,选择表格标题中的复选框。
- 在 Select action 下拉列表中,选择 Change severity。
- 在 Select severity 下拉列表中,选择所需的严重性级别。
- 在 Add reason 文本框中,添加更改严重性的简要说明。
- 选择 Change severity。
对于每个所选漏洞:
- 其严重性在 漏洞详情页 和 漏洞报告 中更新。
- 其严重性上会添加一个徽章,表示严重性已被覆盖。
- 手动严重性调整记录在漏洞的 历史 中。
防止用户覆盖漏洞严重性
此功能的可用性由功能开关控制。 更多信息请查看历史记录。
在某些环境中,您可能需要防止用户覆盖漏洞的严重性。hide_vulnerability_severity_override 功能标志允许管理员在漏洞报告中隐藏严重性覆盖功能。此功能帮助组织在项目中保持标准化的漏洞严重性评级。
启用时,此功能:
- 从漏洞报告的操作下拉列表中隐藏 Change severity 选项。
- 防止用户通过 UI 手动更改严重性级别,确保基于扫描器结果的漏洞评分一致。
- 禁用所有与修改漏洞严重性相关的 API 端点,确保所有访问方式的一致性。
要启用 hide_vulnerability_severity_override 标志,请参见 启用和禁用功能标志部署的 GitLab 功能。
将漏洞添加到现有问题
您可以在漏洞报告中将一个或多个漏洞链接到现有问题。
先决条件:
- 您必须拥有项目的至少 Maintainer 角色或自定义角色中的
admin_vulnerability权限。admin_vulnerability权限在 GitLab 17.0 中已从 Developer 角色 移除。
将漏洞附加到现有问题:
- 在左侧边栏,选择 Search or go to 并找到您的项目或组。
- 转到 Secure > Vulnerability report。
- 选择漏洞:
- 要选择单个漏洞,选择每个漏洞旁边的复选框。
- 要选择页面上的所有漏洞,选择表格标题中的复选框。
- 在 Select action 下拉列表中,选择 Attach to existing issue。
- 在 Enter issue URL or <#issue ID> 文本框中,输入问题的 ID 以自动补全,或添加问题的 URL。您可以输入多个问题,将漏洞添加到这些问题中。
- 选择 Add。
每个所选漏洞将链接到所有指定的问题。
将漏洞添加到新问题
您可以将一个或多个漏洞链接到新问题。
先决条件:
- 您必须拥有项目的至少 Maintainer 角色或自定义角色中的
admin_vulnerability权限。admin_vulnerability权限在 GitLab 17.0 中已从 Developer 角色 移除。
将漏洞附加到新问题:
- 在左侧边栏,选择 Search or go to 并找到您的项目或组。
- 转到 Secure > Vulnerability report。
- 选择漏洞:
- 要选择单个漏洞,选择每个漏洞旁边的复选框。
- 要选择页面上的所有漏洞,选择表格标题中的复选框。
- 在 Select action 下拉列表中,选择 Attach to new issue。
- 选择 Create issue。
您将被重定向到一个新问题。每个所选漏洞已链接到该问题。
按检测日期排序漏洞
默认情况下,漏洞按严重性级别排序,严重性最高的漏洞排在顶部。
要按每个漏洞的检测日期排序漏洞,选择 “Detected” 列标题。
导出
您可以导出漏洞报告中列出的漏洞详情。导出格式为 CSV(逗号分隔值)。所有漏洞都包含在内,因为筛选器不适用于导出。
包含的字段有:
- 状态(请参见下表了解状态值的导出详情)
- 组名
- 项目名
- 报告类型
- 扫描器名称
- 漏洞
- 基本信息
- 其他信息
- 严重性
- CVE(通用漏洞与暴露)
- CWE(通用枚举弱点)
- 其他标识符
- 检测时间
- 位置
- 活动:如果漏洞在默认分支上已解决,则返回
true,否则返回false。 - 注释
- 完整路径
- CVSS 向量
- 忽略原因
- 漏洞 ID
完整详情可通过我们的 作业产物 API 获取。
使用 gl-*-report.json 报告文件名之一替换 *artifact_path,
例如,获取漏洞检测到的文件路径。
漏洞报告中显示的状态值与漏洞导出中包含的不同。请使用以下参考表进行匹配。
| 漏洞报告 | 漏洞导出 |
|---|---|
| Needs triage | detected |
| Dismissed | dismissed |
| Resolved | resolved |
| Confirmed | confirmed |
导出详情
要导出漏洞报告中列出的所有漏洞的详情,选择 Export。
当导出的详情可用时,您将收到一封电子邮件。要下载导出的详情,请选择电子邮件中的链接。
某些 CSV 读取器对行数或列大小有限制,可能使其与大型导出不兼容。漏洞导出不考虑各个程序的局限性。
手动添加漏洞
当漏洞不在 GitLab 漏洞数据库中时,手动添加漏洞。您只能在项目的漏洞报告中添加漏洞。
手动添加漏洞:
- 在左侧边栏,选择 Search or go to 并找到您的项目。
- 选择 Secure > Vulnerability report。
- 选择 Submit vulnerability。
- 完成字段并提交表单。
将打开新创建的漏洞的详情页。
高级漏洞管理
高级漏洞管理由功能标志控制。 更多信息请查看历史记录。
GitLab 主要使用 PostgreSQL 进行漏洞报告中的筛选。由于数据库索引限制和在应用多个筛选器时的性能挑战,GitLab 使用 高级搜索 进行特定的漏洞管理功能。
高级搜索支持以下功能:
- 在项目或组的漏洞报告中按 OWASP 2021 类别分组数据。
- 在项目或组的漏洞报告中基于漏洞的标识符进行筛选。
- 在项目或组的漏洞报告中基于 可访问性 值进行筛选。
高级搜索仅用于这些特定功能,包括它们与其他 筛选器 结合使用时。其他筛选器独立使用时,继续使用标准 PostgreSQL 筛选。
要求
要使用高级漏洞管理中的筛选器:
- 您必须使用启用了 高级搜索 的 GitLab.com 或 GitLab Dedicated 实例。此功能在 GitLab Self-Managed 上不支持,但支持已在 issue 525484 中提出。
- 您必须在项目或组的漏洞报告中。此功能在安全仪表盘中不支持,但支持已在 issue 537807 中提出。
运行时漏洞
运行时漏洞 标签页列出通过 运行时容器扫描 发现的漏洞。 此标签页出现在项目、组和 Security Center 漏洞报告中。