• 前言
  • 容器 / 镜像破绽扫描的利用场景

    • 应急检测
    • 云平安建设: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 利用的破绽问题更加重大,因而举荐先关注利用组件产出的破绽,最初再关注零碎组件产出的利用。