漏洞扫描器并非 100% 靠谱,那么容器镜像安全又当如何保证?
长期以来,修补软件漏洞是维护部署代码安全的重要内容。如今,随着传统应用转向云原生容器化部署,打补丁的过程发生了巨大的变化。
01 漏洞扫描器并非 100%靠谱
众所周知,漏洞是一个软件中的已知缺陷,攻击者可以利用它来进行某种恶意的活动。一般来说,一个软件越复杂,就越有可能存在缺陷。随着软件种类和数量的不断增多,软件漏洞已无处不在。比如 Shellshock、Meltdown 和 Heartbleed,它们都曾是漏洞界中的“当红巨星”,但它们只是每年被报告的海量漏洞中的很小一部分。
目前,大多数应用程序使用第三方库,这些库通常使用特定语言的软件包管理器进行安装。例如,Node.js 使用 npm,Python 使用 pip,Java 使用 Maven 等等,这些第三方软件包本身也是潜在漏洞的来源。
从某种意义上讲,部署任何软件都很可能会引入一些漏洞,而且存在着系统被攻击的风险。为了管理这种风险,用户需要找出存在哪些漏洞,评估它们的严重性,对它们进行优先排序,并按照一定的流程来修复或缓解这些问题。
目前,业界有着许多的漏洞扫描器。从 Trivy、Clair 和 Anchore 等开源软件到 JFrog、Palo Alto 和 Aqua 等公司的商业解决方案。许多容器镜像仓库解决方案,如 Docker Trusted Registry 和 CNCF 项目 Harbor,以及主要公有云提供的镜像仓库,都将扫描作为一项内置功能。
然而,即使扫描器不断更新换代,但使用不同的扫描器得到的结果也会有很大的不同。用户很可能在扫描器中发现由于扫描器错误或扫描器读取的安全公告数据中的缺陷而出现误报或者漏报的情况,扫描器也并非 100%靠谱。
02 镜像扫描需要覆盖开发和运行的全过程
事实上,无处不在的软件漏洞和并非 100%靠谱的扫描器,在云原生化时代企业对扫描器全过程的扫描能力提出更高要求。
原因在于,传统的基于主机的部署中,所有在主机上运行的软件都共享相同的软件包。一个组织的安全团队通常会负责定期更新这些软件包的安全补丁。这样的做法在很大程度上与每个应用程序生命周期的开发和测试阶段脱钩,而且在部署管道中,它的位置偏右。所以,用户经常会有这样的问题:不同的应用程序共享同一个软件包,但需要不同的版本,这就需要谨慎管理依赖项,在某些情况下,还需要改变代码。
相反,在基于容器的部署中,每个镜像都包括它自己的依赖项,所以不同的应用容器可以根据需要拥有自己的软件包版本。没有必要担心应用程序代码和依赖项之间的兼容性。鉴于这一点,加上还会有容器镜像扫描工具,漏洞管理得以在 CI/CD 管道中“左移”。
图 1 扫描 CI/CD 管道中的漏洞
如图(图 1 扫描 CI/CD 管道中的漏洞)中,在这条管道上,最好是尽可能早地消除问题,因为这样做更快、成本也更低。这就如同,在部署后发现和修复错误比在开发过程中发现和修复错误更费时、成本也更高的道理一样。
如果用户使用一个容易在桌面上部署的扫描器,开发人员可以扫描他们的本地镜像构建是否存在问题,这样他们就可以先修复这些问题,然后再将代码推送到源代码库中。在 CI/CD 管道中完成容器镜像构建后,应立即加入扫描步骤。如果扫描发现了超过一定严重程度的漏洞,用户就可以让镜像构建失败,以确保它永远不会被部署。
在镜像构建时进行镜像扫描,并不意味着运行时就不需要镜像扫描了。对于可能使用的任何第三方镜像和或者自己构建的基础镜像(其中可能包含新发现的安全漏洞),在运行时进行镜像扫描更为重要。这是因为,运行的容器中是否包含带有漏洞的软件,用户需要扫描容器中的所有依赖项。
不仅如此,整个开发到运行的过程需要权衡组织机构的风险承受能力和交付速度。组织机构需要制定对应策略和流程来处理镜像安全和漏洞管理,根据漏洞严重性、漏洞数量、漏洞是否具有可用的补丁,或修补程序和漏洞是否影响配置镜像部署等指标来确定漏洞管理标准。
正是这些标准,可以帮助用户进行相应的处理:首先,可以帮助用户决定是否允许存在问题(不严重)镜像进行部署上线;其次,发现新的漏洞后,是否要阻止使用现有镜像进行部署;最后,确定对于已经部署了有问题镜像的容器该如何处理。
不只漏洞扫描的全过程,业界也一致认为,防御 0day 漏洞的最大希望是在运行时检测和防止异常行为的发生。
在云原生时代,我们不得不承认的是,从整个开发部署到运行中的防御手法,已经发生着新的变化,用户也更需要全生命周期的安全防护产品和解决方案。
03 青藤蜂巢提供全方位镜像检测能力
一般来说,商业漏洞扫描器是作为功能更广泛的平台的其中一个功能来出售的,该平台还可以将准入控制与扫描结果联系起来。
青藤蜂巢·云原生安全平台覆盖容器应用程序全生命周期(Build、Ship、Run)安全,及时发现镜像安全问题并进行指导修复,上线以来受到企业用户的广泛认可。
青藤蜂巢提供镜像扫描组件,灵活部署于仓库/单独部署,还支持多扫描组件对接多镜像仓库部署模式。
相比开源扫描,蜂巢的镜像检测能力覆盖全、检查能力深,不仅能检查 Dockerfile 不安全配置问题,更能深入发现镜像中的安全补丁、应用组件漏洞、木马病毒、敏感信息、受信镜像、是否来源基础镜像、是否使用黑名单应用等问题,且具备镜像阻断和修复建议等内容实现管理闭环。
在容器运行时,蜂巢通过对其进程行为、网络行为、文件行为进行监控和学习,然后从镜像业务角度来进行聚类分析可以建立稳定的容器模型,然后通过对容器内的这些行为进行实时监控,对异常偏离但在阈值范围内的行为进行分析,发现未知的入侵威胁。
不仅如此,青藤蜂巢根据同一个命名空间下的镜像为维度,建立模型。这样模型不会随着容器漂移和消亡,依然能继承和应用同一镜像的模型。
目前,青藤蜂巢·云原生安全平台客户已覆盖国央企、金融、运营商、互联网等 100+头部客户。镜像扫描作为整个蜂巢·云原生安全平台中的重要部分,正在发挥着越来越重要的作用。
如果您想了解更多关于青藤蜂巢·云原生安全平台的相关内容,欢迎登录青藤官网(https://www.qingteng.cn/)。
扫码下载更多资料
评论