519 字约 2 分钟
开源组件漏洞扫描插件比较 Pull Request 的依赖变更,只报告本次新增的漏洞(CVE), 并支持按严重等级设置质量门禁。
功能特性
- 增量漏洞扫描:只检查当前 PR 新增的漏洞;
- 漏洞门禁:支持按
low、medium、high、critical阻断; - 修复建议:输出组件版本、CVE、修复版本和升级建议。
插件镜像
cnbcool/sca-vulnerability:latest参数说明
插件参数通过 settings 传递:
| 参数 | 说明 | 默认 |
|---|---|---|
failOnSeverity | 触发门禁的最低漏洞等级,可选 low、medium、high、critical;未配置时仅输出扫描结果,不启用门禁 | 无 |
在 CNB 中使用
.cnb.yml
main:
pull_request:
- stages:
- name: 开源组件漏洞扫描
image: cnbcool/sca-vulnerability:latest
settings:
failOnSeverity: high以上配置会在 PR 新增 High 或 Critical 漏洞时使检查失败;Low 和 Medium 漏洞仍会输出到日志。
只扫描不阻断
省略 failOnSeverity,即可输出新增漏洞而不启用严重等级门禁:
.cnb.yml
main:
pull_request:
- stages:
- name: 开源组件漏洞扫描
image: cnbcool/sca-vulnerability:latest输出说明
插件将新增漏洞直接输出到 CI 日志:
go.mod: HIGH CVE-2025-10002
component: github.com/example/library@v1.2.0
fixed-version: v1.3.0
message: example vulnerability
action: upgrade github.com/example/library to v1.3.0 or later
SCA gate failed: 1 new risk findings, 1 matched gate增量规则
- 已存在的同一组件、同一 CVE 不会重复阻断;
- 新增组件或新的 CVE 会形成新增漏洞;
- 删除文件不会产生新增漏洞;
- 内容未变化的文件重命名不会重复产生漏洞。
退出码
| 退出码 | 说明 |
|---|---|
0 | 扫描完成,且新增漏洞未命中门禁 |
1 | 新增漏洞命中门禁 |
2 | 配置错误或扫描失败 |
下一步
- 插件总览 —— 三个插件的整体配置与门禁说明
- License 扫描 —— License 风险门禁
- SBOM 生成(Delta) —— 组件变化清单