本指南介绍了如何通过在 Secure Source Manager 中启用漏洞扫描功能来提升安全状况。
漏洞扫描功能会自动检测源代码依赖项中的已知漏洞,并扫描对拉取请求的每次新提交。 漏洞会同时显示在拉取请求视图和代码库范围内的安全标签页中。
启用漏洞扫描
确保为您的代码库启用了以下角色和设置。
所需的角色
如需获得启用漏洞扫描所需的权限,请让管理员向您授予 Secure Source Manager 代码库的 Secure Source Manager Repository Admin (roles/securesourcemanager.repoAdmin) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含启用漏洞扫描所需的 securesourcemanager.repositories.update 权限。
如需了解如何授予 Secure Source Manager 角色,请参阅使用 IAM 进行访问权限控制和向用户授予实例访问权限。
更新代码库设置
您可以通过 Secure Source Manager 界面为代码库启用漏洞扫描:
- 前往要启用漏洞扫描的仓库。
- 点击设置图标。
- 找到漏洞扫描切换开关。
- 点击切换开关,将其切换到开启位置。
- 点击 Update Settings 按钮。
使用漏洞扫描
启用漏洞扫描后,系统会自动执行以下扫描:
- 预定扫描:所有分支的头提交,每天一次。
- 拉取请求扫描:
- 创建拉取请求时,新拉取请求的头提交。
- 在推送时,将新提交推送到拉取请求。
系统只会检测代码依赖项中的漏洞。 漏洞扫描会检测公共数据库中列出的漏洞,包括但不限于美国国家漏洞数据库和 GitHub Advisory Database。检测到的漏洞包括指向漏洞公共数据库数据的外部链接,以及 CVE ID(如果可用)。
“安全性”标签页
启用漏洞扫描后,仓库的导航栏中会显示安全标签页,您可以使用该标签页搜索扫描到的漏洞,保留期限最长为 3 年。
“Security”(安全)标签页包含定期扫描和拉取请求扫描的结果。
默认情况下,“安全”标签页的发现于过滤条件将设置为最近浏览的分支(或代码库的默认分支)。如需查看其他漏洞,请调整或清除发现位置过滤条件。
安全标签页包含每个漏洞的以下数据:
- 严重程度:漏洞的安全严重程度,由公共漏洞数据库来源评定。
- ID:公开的 CVE ID(如果有),否则为其他标识符,例如 GHSA ID。此外,如果可用,还会提供指向该漏洞的公共数据库条目的外部链接。
- 发现位置:扫描的 Git 提交 SHA,以及以此为最新提交的所有 Git 分支、Git 标记或拉取请求的列表。
- 文件:包含易受攻击的依赖项的代码库源文件,以及行号(如果有)。
- 软件包:包含漏洞的依赖软件包名称及其版本。如果已知,还会列出解决漏洞的软件包版本。
- 说明:漏洞说明(如有)。
- 检测到:检测到漏洞的扫描日期。
安全标签页中提供以下过滤条件:
- 严重级别:仅显示具有指定严重级别(
CRITICAL、HIGH、MEDIUM或LOW)的漏洞。 - 发现于:仅显示在指定的 Git 分支、标记或提交 SHA 中检测到的漏洞。
- 文件:仅显示在指定来源路径中检测到的漏洞。接受子字符串;例如,
project/可用于过滤project/目录中的易受攻击的依赖项。 - 漏洞:通过漏洞的公开数据(例如其 ID、说明或受影响的软件包名称)搜索漏洞。接受子字符串。
- 开始日期和结束日期:仅显示分别在给定日期之后或之前检测到的漏洞。格式:
YYYY-MM-DD。
拉取请求
拉取请求扫描完成后,检测到的漏洞会显示在拉取请求的对话标签页中。扫描会检查所有代码库文件。 可能包含拉取请求中未修改的文件中的漏洞。
拉取请求会显示检测到的主要漏洞的简略视图。 如需查看拉取请求的漏洞的完整列表和详细信息,请点击完整结果链接,在代码库的“Security”(安全)标签页中查看。
漏洞不会阻止拉取请求合并。
支持的文件类型
系统会扫描以下语言的软件包文件,以查找依赖项漏洞:
| 支持 | |
|---|---|
| Go | |
| Java | |
| JavaScript | |
| Node.js | |
| PHP | |
| Python | |
| Ruby | |
| Rust | |
| TypeScript | |
| .NET |