软件包扫描功能可识别 Artifact Registry 代码库中基于语言的软件包的开源依赖项中存在的新旧漏洞。
如需详细了解与扫描软件包相关的费用,请参阅价格。
此概览假定您已熟悉如何在 Artifact Registry 中使用 Docker 代码库。
概览
当软件包推送到 Artifact Registry 时,Artifact Analysis 会扫描该软件包中的文件。初始扫描后,Artifact Registry 会继续监控已扫描软件包的元数据,以发现新漏洞。
为了评估潜在的风险领域,Artifact Registry 会将软件包配置文件中的依赖项与已知漏洞进行匹配。您可以在 Artifact Analysis 中查看软件包中的潜在漏洞。
扫描软件包是否存在漏洞
Artifact Analysis 会扫描 Artifact Registry 代码库中的软件包,以识别漏洞,还会识别依赖项和许可,以便您了解软件包组成。
Artifact Analysis 会在新软件包推送到 Artifact Registry 时扫描这些软件包。此过程称为“自动扫描”。此扫描可提取有关软件包中文件的信息。扫描软件包后,Artifact Analysis 会生成一份漏洞报告,其中显示了相应软件包的漏洞发生实例。只有在公开监控的软件包中才会检测到漏洞。
持续分析
扫描软件包后,Artifact Analysis 会持续监控 Artifact Registry 中已扫描的软件包元数据,以查找新漏洞。
Artifact Analysis 每天会多次从漏洞来源接收新的和更新后的漏洞信息。当有新的漏洞数据到达时,Artifact Analysis 会更新现有的漏洞发生实例,为新的备注创建新的漏洞发生实例,并删除不再有效的漏洞发生实例。
只要映像和软件包是在过去 30 天内拉取的,Artifact Analysis 就会继续扫描它们。30 天后,扫描的映像和软件包的元数据将不再更新,并且结果将过时。
Artifact Analysis 会归档过时超过 90 天的元数据。只有使用 API 才能评估此归档的元数据。 您可以拉取包含过时或归档元数据的映像,以重新扫描该映像。 刷新元数据最多可能需要 24 小时。无法重新扫描具有过时或已归档元数据的软件包。
支持的软件包类型
当您将软件包推送到 Artifact Registry 时,Artifact Analysis 可以扫描漏洞。
下表显示了 Artifact Analysis 可以扫描的软件包类型:
| 使用 Artifact Registry 进行自动扫描 | 按需扫描 | |
|---|---|---|
| Java 软件包 | ||
| Python 软件包 | ||
| Node.js 软件包 |
Artifact Analysis 界面
在 Google Cloud 控制台中,您可以查看 Artifact Registry 中软件包的漏洞和元数据。
您可以使用 gcloud CLI 查看漏洞和元数据。
您还可以使用 Artifact Analysis REST API 执行上述任何操作。与其他 Cloud Platform API 一样,您必须使用 OAuth2 验证访问权限。
Artifact Analysis API 支持 gRPC 和 REST/JSON。您可以使用客户端库或使用适用于 REST/JSON 的 curl 来调用 API。
漏洞来源
以下部分列出了 Artifact Analysis 用于获取 CVE 数据的漏洞来源。
语言包扫描
Artifact Analysis 支持对软件包中的文件进行漏洞扫描。漏洞数据是从 GitHub 咨询数据库中获取的。
在大多数情况下,每个漏洞都会分配一个 CVE ID,该 ID 会成为相应漏洞的主要标识符。如果漏洞未分配 CVE ID,则会分配 GHSA ID 作为标识符。如果该漏洞之后获得了 CVE ID,则漏洞 ID 会更新为与 CVE ID 一致。如需了解详情,请参阅检查项目中的特定漏洞。
软件包管理器和语义版本控制
- Java - Artifact Analysis 支持遵循 Maven 命名惯例的 Maven 软件包。如果软件包版本包含空格,则系统不会扫描该版本。
- Node.js - 软件包版本匹配遵循语义版本控制规范。
- Python - Python 版本匹配遵循 PEP 440 语义。
限制
Artifact Analysis 仅扫描包含不超过 100 个文件的软件包。
如果您将同一软件包推送到多个代码库,则每次推送都需要付费。如需了解详情,请参阅 Artifact Analysis 价格。
后续步骤
- 如需了解如何查看软件包漏洞和过滤漏洞发生情况,请参阅自动扫描软件包。