漏洞页面

项目中的每个漏洞都有一个漏洞页面,此页面包含漏洞的详细信息,包括:

  • 描述
  • 何时被检测到
  • 当前状态
  • 可用操作
  • 关联议题
  • 操作日志
  • 文件名称或漏洞所在的行数(如有)

如果扫描器确定该漏洞是误报,则该漏洞页面的顶部会包含一条警告消息。

当在项目的默认分支中不再检测到漏洞时,您应该将其状态更改为 已解决,确保如果它在未来的合并中被意外重新引入,它会再次报告为新记录漏洞。要更改多个漏洞的状态,请使用漏洞报告的活动过滤器

解释漏洞 (ULTIMATE SAAS BETA)

  • 作为 JihuLab.com 上的实验性功能引入于极狐GitLab 16.0。
  • 变更为 Beta 状态于 16.2。
  • 在极狐GitLab 17.2 中 GA。

极狐GitLab 可以通过使用大型语言模型来帮助您:

  • 总结漏洞。
  • 帮助开发人员和安全分析师了解漏洞、利用漏洞以及修复该漏洞。
  • 提供漏洞缓解建议。

解释漏洞

使用”解释漏洞”功能更好地了解漏洞及其可能的缓解方法。

先决条件:

  • 您必须订阅了极狐GitLab 专业版。
  • 您必须是该项目的成员。
  • 该漏洞必须是 SAST 发现。

要解释漏洞:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 安全 > 漏洞报告
  3. 可选。要移除默认过滤器,选择 清除 ( )。
  4. 在过滤栏上方,选择过滤栏。
  5. 在下拉列表中,选择 工具,然后选择 SAST 分类中的所有值。
  6. 选择过滤栏外部。漏洞严重性总和和匹配漏洞列表更新。
  7. 选择您想要解释的 SAST 漏洞。
  8. 执行以下操作之一:

    • 解决 下拉列表中选择 解释漏洞,然后选择 解释漏洞

解释漏洞的响应显示在页面右侧。

与第三方 AI API 共享的数据

以下数据与第三方 AI API 共享:

  • 漏洞标题(可能包含文件名,具体取决于使用的扫描仪)
  • 漏洞标识符
  • 文件名

漏洞代码流

  • 引入于 GitLab 17.3,使用功能标志,默认禁用。
  • 在 JihuLab.com 上启用于 GitLab 17.3。
  • 在私有化部署上启用于 GitLab 17.4。
  • 在 GitLab 17.4 中 GA,功能标志移除。

对于有些由高级 SAST 检测到的漏洞,会有一个 代码流 选项卡。一个漏洞的代码流是数据从用户输入(源)到易受攻击的代码行(接收器)通过所有赋值、操作和净化的路径。此信息能够帮助您理解和评估漏洞的内容、影响和风险。

代码流 选项卡显示:

  • 源到接收器的步骤。
  • 相关文件,包括代码片段。

A code flow of a Python application across two files

漏洞状态值

漏洞的状态可以是以下之一:

  • 需要分类:新发现的漏洞的默认状态。
  • 已确认:用户已看到此漏洞并确认它是准确的。
  • 已忽略:用户已看到此漏洞并忽略它。如果在后续扫描中检测到,已忽略的漏洞仍将被忽略。
  • 已解决:漏洞已经被修复或不再存在。如果一个已解决的漏洞被重新引入并被检测到,其记录将被重新创建,状态将被设置为 需要分类

一个漏洞的典型生命周期为:

%%{init: { "fontFamily": "GitLab Sans" }}%% stateDiagram accTitle: Vulnerability lifecycle accDescr: Typical lifecycle of a vulnerability direction LR Needs_triage: Needs triage [*] --> Needs_triage Needs_triage --> Confirmed Needs_triage --> Dismissed Dismissed --> [*] Confirmed --> Resolved Resolved --> Needs_triage: If reintroduced and detected again Resolved --> [*]

漏洞忽略原因

  • 引入于极狐GitLab 15.11,使用名为 dismissal_reason 的功能标志。
  • 在极狐GitLab 16.0 为私有化部署启用。
  • 在极狐GitLab 16.2 中 GA,功能标志 dismissal_reason 被移除。

忽略漏洞时,必须选择以下原因之一来阐明其被忽略的原因:

  • 可接受的风险:该漏洞是已知的,尚未修复或缓解,但被认为是可接受的业务风险。
  • 误报:报告中的错误,其中测试结果错误地指示系统中存在漏洞,而实际上该漏洞不存在。
  • 缓解控制:组织采用的管理、操作或技术控制(即保护措施或对策),为信息系统提供同等或可比较的保护。
  • 用于测试:该发现不是漏洞,因为它是测试的一部分或者是测试数据。
  • 不适用:该漏洞是已知的,尚未修复或缓解,但被认为是应用程序的一部分,不会更新。

更改漏洞状态

  • 在极狐GitLab 16.4 中弃用了具有 Developer 角色的用户更改漏洞状态的权限并在极狐GitLab 17.0 中被移除。

先决条件:

  • 您必须至少具有项目的维护者角色,或者自定义角色具有 admin_vulnerability 权限。

要从漏洞页面更改漏洞状态:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 安全 > 漏洞报告
  3. 选择漏洞的描述。
  4. 状态 下拉列表中选择一个状态,然后选择 更改状态

    在 15.11 及更高版本,当您将漏洞状态更改为 已忽略 时,您必须选择忽略原因

  5. (可选)在页面底部,向日志条目添加评论。

状态更改的详细信息,包括更改者和更改时间,都记录在漏洞的操作日志中。

为漏洞创建极狐议题

您可以创建一个极狐GitLab 议题来追踪解决或缓解漏洞的任何操作。要为漏洞创建议题:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 安全 > 漏洞报告
  3. 选择漏洞的描述。
  4. 选择 创建议题

会从漏洞报告中的漏洞信息来在极狐GitLab 项目中创建议题。

要创建 Jira 议题,可查阅 创建 Jira 议题

链接漏洞到极狐GitLab 和 Jira 议题

您可以链接漏洞到一个或多个现有的极狐GitLab 议题Jira 议题。同时间只能有一个链接功能可用。添加链接有助于跟踪解决或缓解漏洞的问题。

链接漏洞到现有的极狐GitLab 议题

先决条件:

要链接漏洞到现有的极狐GitLab 议题:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 安全 > 漏洞报告
  3. 选择漏洞描述。
  4. 链接议题 部分,选择加号图标( )。
  5. 对于要关联的每个议题,可以:
    • 粘贴指向议题的链接。
    • 输入议题的 ID(以 # 为前缀)。
  6. 选择 添加

选中的议题被添加到 关联议题 部分,并且更新了关联议题计数。

关联议题显示在漏洞报告和漏洞页面中。

注意:

  • 漏洞页面显示关联议题,但议题页面不显示与它相关的漏洞。
  • 一个议题一次只能与一个漏洞相关联。
  • 议题可以跨群组和项目关联。

链接漏洞到现有的 Jira 议题

先决条件:

  • 确保配置了 Jira 议题继承并勾选了 为漏洞创建 Jira 议题 勾选框。

要链接漏洞到现有的 Jira 议题,添加以下行到 Jira 议题的描述中:

/-/security/vulnerabilities/<id>

<id> 是任意漏洞 ID。您可以添加多行不同的 ID 到一个描述中。

具有合适描述的 Jira 议题会被添加到 相关 Jira 议题 部分中,并且更新了关联议题计数。

关联了漏洞的 Jira 议题仅在漏洞页面展示。

需要注意下述的漏洞和链接的 Jira 议题之间的条件:

  • 漏洞页面和议题页面显示与它们关联的漏洞。
  • 一个议题同时可以被关联到一个或多个漏洞上。

解决漏洞

对于某些漏洞,解决方案是已知的,但是需要手动实现。漏洞页面中的 解决方案 字段提供了由安全扫描工具提供的解决方案,或者在手动创建漏洞时输入。极狐GitLab 工具使用了 GitLab 安全公告数据库的数据。

一些工具可能包含一个软件补丁来应用建议的解决方案。在那些情况下,漏洞页面包含一个 使用合并请求解决 选项。

支持以下扫描工具:

  • Dependency 扫描。自动补丁创建仅适用于使用 yarn 管理的 Node.js 项目。 此外,当 FIPS 模式禁用时,才支持自动创建补丁。
  • 容器扫描

要解决漏洞,您可以:

Create merge request from vulnerability

使用合并请求解决漏洞

使用合并请求解决漏洞:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 安全 > 漏洞报告
  3. 选择漏洞的描述。
  4. 通过合并请求解决 下拉列表中,选择 通过合并请求解决

创建一个合并请求,该请求应用解决漏洞所需的补丁。根据您的标准工作流程处理合并请求。

手动解决漏洞

手动应用极狐GitLab 为漏洞生成的补丁:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 安全 > 漏洞报告
  3. 选择漏洞的描述。
  4. 通过合并请求解决 下拉列表中,选择 下载补丁以解决
  5. 确保您的本地项目具有与生成补丁相同的已检出提交。
  6. 运行 git apply remediation.patch
  7. 验证并将更改提交到您的分支。
  8. 创建合并请求以将更改应用到您的主分支。
  9. 根据您的标准工作流程处理合并请求。

启用针对漏洞的安全培训

note 安全培训无法在离线环境中进行,将计算机与公共互联网隔离也是一项安全措施。一些第三方培训供应商可能会要求您注册免费账户。访问 Secure Code WarriorKontraSecureFlag 进行注册。 极狐GitLab 不会向这些第三方供应商发送任何用户信息;我们确实会发送 CWE 或 OWASP 标识符以及文件扩展名的语言名称。

安全培训可帮助您的开发人员学习如何修复漏洞。开发人员可以查看所选培训提供商提供的与检测到的漏洞相关的安全培训。

为项目中的漏洞启用安全培训:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 在左侧边栏中,选择 安全 > 配置
  3. 在标签栏上,选择 漏洞管理
  4. 要启用安全培训提供者,请打开切换开关。

安全培训使用来自第三方供应商的内容。您必须有互联网连接才能使用此功能。

查看漏洞的安全培训

如果启用了安全培训,则漏洞页面可能包含与检测到的漏洞相关的培训链接。 培训的可用性取决于启用的培训供应商是否具有与特定漏洞匹配的内容。根据漏洞标识符请求培训内容,赋予漏洞的标识符因漏洞而异,可用的培训内容因供应商而异,这意味着某些漏洞将不会显示任何培训内容。 CWE 的漏洞最有可能返回训练结果。

要查看漏洞的安全培训:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 选择 安全 > 漏洞报告
  3. 选择您要查看安全培训的漏洞。
  4. 选择 查看培训