💜 前言
💙 容器/镜像漏洞扫描的应用场景
💘 应急检测
💘 云安全建设:CI/CD
💛 veinmind-vuln 的使用
💚 如何处理镜像的漏洞事件?
在镜像安全的建设中,镜像漏洞扫描是保证镜像应用依赖(Dependencies)安全的重要方式之一,也帮助用户识别镜像中的软件漏洞。
根据 snyk 发布的 2022 年开源安全报告显示,平均每个应用中会出现 5.1 个严重等级的漏洞,应用依赖导致的漏洞占据了总数的近 40%。
而镜像之间的依赖关系,会进一步的放大这个比例:当一个存在漏洞的镜像作为了另一个镜像的基础镜像,很大概率该镜像也会存在这个漏洞,增加了安全风险。 因此,应用漏洞是镜像安全的一个重要部分。
在云原生环境或生产环境中,当软件 0day 漏洞爆发时,仅通过白盒代码审计(SAST)的方式来排查应用是否使用了 0day 组件,并不能够百分之百的保证线上业务的安全性,因为我们并不清楚整个容器在启动或运行的过程中,是否做了其他操作,或引入了其他依赖。因此,对生产容器进行安全扫描可以清晰、明确的获取到容器软件信息,并精准的与 0day 信息进行匹配。
在云安全建设的过程中,我们依旧希望能够尽早的、在开发构建阶段发现安全问题,并阻断自动化测试/部署流程,通过安全前移的方式来引导开发者在开发阶段提前处理安全风险。
我们可以通过设定漏洞的阈值,对事件进行解析,从而判断是否要进行阻断,并推送给开发者进行修复。
如果需要更方便地使用集成功能,可以尝试使用问脉 SaaS 版本:https://rivers.chaitin.cn
veinmind-vuln
插件是由 veinmind-asset
插件升级而来,在资产信息扫描的基础上,对所有的资产信息进行了 CVE 漏洞匹配。能最大程度上发现并检测镜像应用漏洞信息。
可以通过下方命令快速对主机上的镜像进行扫描,并将列出所有组件以及他们对应的漏洞 ID:
./veinmind-vuln scan image
如果希望获取到漏洞更加详细的信息,可以使用-v
进行展示:
./veinmind-vuln scan image -v
如果只需要获取镜像的资产信息,可以通过 --only-asset
参数,仅对镜像的资产进行扫描:
./veinmind-vuln scan image --only-asset
对于扫描出的漏洞信息,主要分为两大类:
举两个例子:
同样是发现 CVE-2019-10129(PostgreSQL) 缓冲区错误漏洞),如果该漏洞出现在 alpine:3.9
的镜像中,你需要手动升级 postgresql 的版本;而如果漏洞出现于 postgres:xxx
的镜像中,你只需要尝试将镜像升级为最新的 tag 进行修复即可(如果官方更新了该问题)。
除此之外,对于镜像扫描出现的 CVE 信息,我们也可以根据软件来源来进行粗略的优先级区分,如:来自应用层的漏洞往往会比系统 os 应用的漏洞问题更加严重,因此推荐先关注应用组件产出的漏洞,最后再关注系统组件产出的应用。