trivy开源漏洞扫描器
```html 第一次用 Trivy 扫描一个 Node.js 项目,源漏终端里刷刷刷蹦出三百多个 CVE,洞扫我盯着屏幕愣了几秒——这玩意儿比我想象的描器狠。它不挑食,源漏容器镜像、洞扫文件系统、描器Git 仓库、源漏Kubernetes 集群,洞扫逮哪儿扫哪儿。描器装起来也简单,源漏一条 这东西是 Aqua Security 开源的,Apache 2.0 协议,用 Go 写的。核心逻辑不复杂:拿本地漏洞库比对目标里的软件包版本。漏洞库从 NVD、Red Hat、Debian、Alpine 这些地方拉数据,定期更新。你扫一个 我拿它扫过一个跑了半年的 Spring Boot 服务。Docker 镜像基于 Trivy 的扫描模式分几种。 输出格式也灵活。默认是表格,人眼看着舒服。要集成到 CI 里,可以用 有个细节挺有意思。Trivy 扫 Alpine 镜像时,漏洞数量通常比 Debian 或 Ubuntu 少得多。不是 Alpine 更安全,而是它用的 musl libc 和 busybox 攻击面小,且 Alpine 安全团队修漏洞速度快。我对比过同一个应用的 Alpine 和 Debian 版本,Alpine 报 8 个漏洞,Debian 报 63 个。选基础镜像这件事,Trivy 用数据告诉你差距有多大。 当然它也不是万能。Trivy 不扫源码里的逻辑漏洞,不替代 SAST 工具。它查的是已知 CVE,零日漏洞无能为力。误报也有,尤其是 Java 生态,同一个 CVE 可能被多个依赖路径引入,报好几次。但瑕不掩瑜,对于一个免费、开源、零配置的扫描器,你很难要求更多。 我现在每个新项目上手第一件事就是跑一遍 Trivy。镜像构建完扫一次,依赖更新后扫一次,上线前再扫一次。它就像个不知疲倦的安检员,不跟你讲情面,有问题就列出来。用久了会形成条件反射——看到 Critical 就手痒想修,看到 High 就记进待办。这种肌肉记忆,比任何安全培训都管用。brew install trivy 或者从 GitHub Releases 下个二进制扔进 PATH,洞扫完事。描器没有 agent,源漏没有服务端,洞扫就是描器一个静态编译的 Go 程序,跑完就退,干净利落。python:3.9-slim 镜像,它把镜像层解开,找到所有已安装的包,跟漏洞库里的 CVE 列表对一遍,输出一张表。表里写着包名、当前版本、修复版本、CVE 编号、严重等级。就这么直白。openjdk:11-jre-slim,Trivy 报出 47 个漏洞,其中 3 个 Critical。最要命的是 libssl1.1 那个 CVE-2022-0778,无限循环拒绝服务。这镜像当初是从 Docker Hub 直接拉的,谁也没细看底层依赖。Trivy 一跑,问题全晾在桌面上。修复也简单,换个基础镜像,重新构建,再扫一遍,漏洞归零。前后不到二十分钟。trivy image 扫容器镜像,trivy fs 扫本地目录,trivy repo 扫远程 Git 仓库,trivy k8s 扫 Kubernetes 集群里的工作负载。我最常用的是 trivy fs --security-checks vuln,config .,既查依赖漏洞,也查 Dockerfile、Kubernetes YAML 里的配置问题。比如容器以 root 运行、没设资源限制、镜像标签用了 latest,这些它都会标出来。--format json 或者 --format sarif,直接喂给 GitHub Code Scanning 或者 DefectDojo。退出码可以控制,--exit-code 1 --severity CRITICAL 意味着只要出现严重漏洞,流水线就断。这招在 CI 里特别管用,强制团队在合并前把高危漏洞清掉。
-
上一篇
-
下一篇
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-