如何玩转云原生场景下的镜像容器漏洞扫描?

时间:2022-03-26 00:35:51
  • ???? 前言
  • ???? 容器/镜像漏洞扫描的应用场景
  • ???? 应急检测
  • ???? 云安全建设:CI/CD
  • ???? veinmind-vuln 的使用
  • ???? 如何处理镜像的漏洞事件?


1、前言

在镜像安全的建设中,镜像漏洞扫描是保证镜像应用依赖(Dependencies)安全的重要方式之一,也帮助用户识别镜像中的软件漏洞。

根据 snyk 发布的 2022 年开源安全报告显示,平均每个应用中会出现 5.1 个严重等级的漏洞,应用依赖导致的漏洞占据了总数的近 40%。 

如何玩转云原生场景下的镜像容器漏洞扫描?

而镜像之间的依赖关系,会进一步的放大这个比例:当一个存在漏洞的镜像作为了另一个镜像的基础镜像,很大概率该镜像也会存在这个漏洞,增加了安全风险。因此,应用漏洞是镜像安全的一个重要部分。


2、容器/镜像漏洞扫描的应用场景

应急检测

在云原生环境或生产环境中,当软件 0day 漏洞爆发时,仅通过白盒代码审计(SAST)的方式来排查应用是否使用了 0day 组件,并不能够百分之百的保证线上业务的安全性,因为我们并不清楚整个容器在启动或运行的过程中,是否做了其他操作,或引入了其他依赖。因此,对生产容器进行安全扫描可以清晰、明确的获取到容器软件信息,并精准的与 0day 信息进行匹配

如何玩转云原生场景下的镜像容器漏洞扫描?


云安全建设:CI/CD

在云安全建设的过程中,我们依旧希望能够尽早的、在开发构建阶段发现安全问题,并阻断自动化测试/部署流程,通过安全前移的方式来引导开发者在开发阶段提前处理安全风险。

我们可以通过设定漏洞的阈值,对事件进行解析,从而判断是否要进行阻断,并推送给开发者进行修复。

如何玩转云原生场景下的镜像容器漏洞扫描?


3、veinmind-vuln 的使用

​veinmind-vuln​​​ 插件是由 ​​veinmind-asset​​ 插件升级而来,在资产信息扫描的基础上,对所有的资产信息进行了 CVE 漏洞匹配。能最大程度上发现并检测镜像应用漏洞信息。

可以通过下方命令快速对主机上的镜像进行扫描,并将列出所有组件以及他们对应的漏洞 ID:

​./veinmind-vuln scan image​

如何玩转云原生场景下的镜像容器漏洞扫描?


如果希望获取到漏洞更加详细的信息,可以使用 ​​-v​​ 进行展示:

​./veinmind-vuln scan image -v​

如何玩转云原生场景下的镜像容器漏洞扫描?


如果只需要获取镜像的资产信息,可以通过 ​​--only-asset​​ 参数仅对镜像的资产进行扫描:

​./veinmind-vuln scan image --only-asset​​ 

如何玩转云原生场景下的镜像容器漏洞扫描?


4、如何处理镜像漏洞信息

对于扫描出的漏洞信息,我们可以主要分为两大类:

  • 通过升级镜像版本进行修复。
  • 通过升级应用自身的组件版本或配置进行修复。

举两个例子,如,同样是发现 CVE-2019-10129(PostgreSQL 缓冲区错误漏洞),如果该漏洞出现在 ​​alpine:3.9​​​ 的镜像中,你需要手动升级 postgresql 的版本;而如果漏洞出现于 ​​postgres:xxx​​ 的镜像中,你只需要尝试将镜像升级为最新的 tag 进行修复即可(如果官方更新了该问题)。

除此之外,对于镜像扫描出现的 CVE 信息,我们也可以根据软件来源来进行粗略的优先级区分,如:来自应用层的漏洞往往会比系统 os 应用的漏洞问题更加严重,因此推荐先关注应用组件产出的漏洞,最后再关注系统组件产出的应用。