trivy可自动扫描镜像操作系统层漏洞,支持主流发行版包管理器,安装简便,通过指定severity、ignore-unfixed和vuln-type等参数精准控制扫描,集成ci/cd时用--exit-code实现自动拦截,配合缓存与定期更新确保高效准确。

直接用 Trivy 这类工具集成进构建流程,就能自动查出镜像里操作系统层面的漏洞,不用手动翻日志或比对 CVE 列表。
选对工具并装好
Trivy 是目前最主流的开源选择,它原生支持 Alpine、Ubuntu、Debian、CentOS、RHEL 等主流发行版的包管理器(APK、APT、YUM、DNF),能准确识别系统软件包版本并匹配 CVE 数据库。安装方式简单:
- Linux:用
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin - macOS:用
brew install aquasecurity/trivy/trivy - 也可直接下载二进制文件或通过容器运行
扫描命令要带关键参数
默认扫描会列出所有漏洞,但实际落地时建议聚焦高危问题。执行命令时明确指定严重等级和输出格式:
-
trivy image --severity HIGH,CRITICAL --format table nginx:1.25:只显示高和严重级漏洞,表格更易读 -
trivy image --ignore-unfixed myapp:latest:跳过暂无补丁的漏洞,避免干扰可修复项 -
trivy image --vuln-type os myapp:latest:限定只查操作系统层漏洞(不包含应用依赖),定位更精准
嵌入 CI/CD 实现自动拦截
把扫描变成构建流水线的强制关卡,有问题就停发,不是只生成报告:
- 在
.gitlab-ci.yml或.github/workflows/ci.yml中添加 job,拉取镜像后立即执行trivy image - 加
--exit-code 1 --severity HIGH,CRITICAL参数:一旦发现高危漏洞,命令返回非零码,CI 自动失败 - 搭配
--cache-dir /tmp/trivy-cache可复用本地数据库,加快后续扫描速度
定期更新漏洞库并验证结果
Trivy 默认每次扫描前自动更新数据库,但内网或离线环境需主动维护:
- 手动同步:运行
trivy image --download-db-only更新本地 CVE 库 - 确认扫描覆盖范围:Trivy 会解析镜像每一层,提取
/var/lib/dpkg/status(Debian)、/var/lib/rpm(RHEL)等真实包信息,不是只看标签 - 遇到误报?检查是否因基础镜像已打补丁但未重打标签——这时应重建镜像而非忽略告警










