持续漏洞扫描
- Tier: Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
持续漏洞扫描通过将项目依赖项的组件名称和版本与最新安全公告中的信息进行比较,来查找安全漏洞。
当持续漏洞扫描扫描包含支持的包类型组件的所有项目时,可能会出现新的漏洞。
由持续漏洞扫描创建的漏洞使用 GitLab SBoM Vulnerability Scanner 作为扫描器名称。
与基于 CI 的安全扫描不同,持续漏洞扫描通过后台任务(Sidekiq)执行,而不是 CI 管道,并且不会生成安全报告工件。
先决条件
- 一个包含持续漏洞扫描支持的依赖项的项目。请参阅如何生成 CycloneDX SBOM 报告。
- 安全公告已同步到 GitLab 实例。
支持的包类型
持续漏洞扫描支持具有以下 PURL 类型的组件:
apkcargoconandebgomavennpmnugetpackagistpubpypirpmrubygemswift
不支持 Go 伪版本。引用 Go 伪版本的项目依赖项永远不会被视为受影响,因为这可能导致误报。
不支持包含 ^ 的 RPM 版本。支持这些版本的工作在问题 459969中跟踪。
不支持包含前导零的 APK 版本。支持这些版本的工作在问题 471509中跟踪。
不支持 Red Hat 发行版中的 RPM 包。支持此用例的工作在史诗 12980中跟踪。
如何生成 CycloneDX SBOM 报告
使用 CycloneDX SBOM 报告向 GitLab 注册您的项目组件。
GitLab 提供可以生成与 GitLab 兼容报告的安全分析器:
- 容器扫描
- 注册表容器扫描
- 依赖项扫描
- 依赖项扫描 CI/CD 组件(实验性)
检查新漏洞
持续漏洞扫描检测到的新漏洞在漏洞报告中可见。 但是,它们不会列在依赖项列表或检测到受影响 SBOM 组件的管道中。
漏洞根据以下场景创建:
-
在安全公告添加或更新后,如果代码库保持不变,可能需要几小时才能将相应的漏洞添加到您的项目中。 仅考虑最近 14 天内发布的安全公告进行持续漏洞扫描。
-
对于现有的安全公告,只有在检测到新组件并且满足以下任一条件时,才会创建漏洞:
当不再检测到漏洞时
持续漏洞扫描在发布新公告时自动创建漏洞,但它无法判断项目中何时不再存在漏洞。为此,GitLab 仍然需要在默认分支的管道中执行容器扫描或依赖项扫描扫描,并生成包含最新信息的安全报告工件。当这些报告被处理,并且它们不再包含某些漏洞时,即使这些漏洞是由持续漏洞扫描创建的,它们也会被标记为不再存在。此行为在 17.1 版本中通过问题 441490引入,适用于 GitLab 维护的扫描器(Trivy、gemnasium、gemnasium-python、gemnasium-maven)。
对此行为的改进,包括只需要上传更新的 SBOM,计划在史诗 8026中实现。
安全公告
持续漏洞扫描使用包元数据库,这是一个由 GitLab 管理的服务,用于聚合许可证和安全公告数据,并定期发布供 GitLab.com 和 GitLab Self-Managed 实例使用的更新。
在 GitLab.com 上,同步由 GitLab 管理,所有项目都可以使用。
在 GitLab Self-Managed 上,您可以在 GitLab 实例的管理员区域选择要同步的包注册表元数据。
数据源
当前安全公告的数据源包括:
为漏洞数据库做贡献
要查找漏洞,您可以搜索 GitLab Advisory Database。
您还可以提交新的漏洞。