前语

近年来,云原生架构被广泛的布置和运用,事务容器化布置的份额逐年进步,关于突发严重缝隙等0day安全事情,往往给安全的应急带来严重的应战。例如前段时间广受影响的严重缝隙的迸发,能够说是云原生架构下安全建造和安全运营面对的一次大考。

本文将以该高危恣意代码履行缝隙作为案例,分享云原生架构下的安全建造和安全运营的考虑。

缝隙处置回顾

缝隙迸发后,第一时间关注的必定是进犯者能否运用缝隙进犯事务体系,能够通过哪些办法施行进犯。关于容器环境,从进犯视角来看,一般能够有以下几种侵略途径。

从重大漏洞应急看云原生架构下的安全建设与安全运营(上)

图1

1)通过容器主机施行进犯。这种一般是因为主机配置问题引起,例如对公网开放并且未敞开认证的Docker RemoteAPI,或者是未敞开认证的Kubernetes API Server。

2)通过脆弱的容器施行进犯。这种类型进犯首要以容器环境中布置运用程序的脆弱性作为进犯突破口。

3)通过投毒的镜像施行进犯。首要通过对公共库房中的镜像进行投毒,当镜像被拉取运转时,即可履行相关的进犯操作。

进犯者能够做什么?

本次log4j2缝隙的影响,首要是体现在第二种进犯办法上,也便是进犯者会通过受影响的运用程序,运用缝隙对容器化的运用施行进犯。

一旦第一步缝隙运用成功,接下来就会依照一般的渗透进犯逻辑,一方面在主机履行恶意程序;另一方面通过横向移动,扩展进犯规划,这里的横向移动既会涉及主机层面的容器逃逸,也包括东西向网络层面的移动进犯。

如何快速响应处置?

云原生架构下,在缝隙的应急响应上,整体思路和传统安全事情的应急是一致的。首要需求对缝隙的原理以及可能被运用的办法进行分析,确认修正和缓解方案,一起拟定相关安全产品的防护规矩,完成对缝隙运用的检测和阻拦,最终便是有条有理的进行缝隙的修正和处置。

在容器环境中,具体能够梳理出如下的一些要害操作步骤:

  • 首要,需求确认现有事务的受影响规划。例如:确认库房中一切受缝隙影响的镜像,确认受影响的线上事务;

  • 其次,晋级相关安全产品的防护战略。例如通过WAF规矩以及防火墙规矩等完成对缝隙运用的进犯进行必定程度的暂时性阻拦;必要时晋级运转时检测战略,一旦侵略成功,能够快速的发现并进行处置。

  • 最终,便是修正缝隙,晋级到官方发布的修正版别。

为什么不容易

安全应急或者安全运营的功率,很大程度上依靠安全才能的建造。上述处置步骤,相对来说是理想情况下的一种处置流程,或者是需求在一套完善的安全才能建造根底之上才能够轻松施行的处置流程。

依据腾讯云在2021年11月份发布的《腾讯云容器安全白皮书》显示,当前云原生用户在安全才能的建造上可谓是参差不齐,像镜像缝隙扫描、主机安全加固以及集群监控审计等根底安全才能,落地布置的份额也只是只要50%左右,甚至有7%的用户在云原生的运用时没有任何安全才能的布置。

从重大漏洞应急看云原生架构下的安全建设与安全运营(上)

图2

因而,在这样的现状下,面对log4j2这样的0day缝隙,在应急处置上,难免会出现各种捉襟见肘的问题。

操控影响规划

关于缝隙的处置,首要便是操控缝隙影响规划。因为缝隙的修正需求必定的时间周期,像log4j2这种运用规划如此之广的组件,甚至有猜测,缝隙影响将会继续很长一段时间,因而操控新的影响财物增加也是十分重要的。

这里首要体现在两个方面:

(1)防止包括缝隙镜像的入库。CI集成以及镜像入库等阶段,需求严厉进行安全查看,防止缝隙的引入。

(2)防止包括缝隙镜像的运转。在新的服务发动运转时,需求检测相关镜像是否包括缝隙,关于未通过安全检测的镜像,要严厉阻挠其发动运转。

怎么确认受影响规划

1)识别一切受到缝隙影响的镜像

在确认事务的受影响规划时,假设布置了容器镜像安全扫描的才能,安全厂商一般会在第一时间更新缝隙库或检测规矩,用户能够直接通过对镜像库房的一切镜像进行扫描发现受影响的镜像。

假设没有布置镜像安全扫描,腾讯云容器安全服务供给7天的免费试用,用户能够通过其间的镜像扫描功用,对镜像财物进行排查。最差情况下,用户能够运用开源的镜像扫描东西(例如Clair/Anchore/Trivy等)进行问题排查,但是有一点需求注意,运用开源东西前,要保证缝隙库或者检测规矩现已包括了对目标缝隙的检测。

2)识别受影响的运转工作负载

当确认了受影响的镜像后,就需求依据这个列表确认受影响的线上事务。假设咱们的日常安全运营做的满足完善,理论上这个列表跟受影响的事务列表应该是一致的。或者是咱们需求布置相应的安全才能,完成镜像财物到线上事务财物的映射。

假设这些都没有的话,就需求逐一集群的检索当前运用的镜像,判断其是否受到影响,例如能够运用“kubectl describe pods –all-namespaces| grep image”这种最粗犷的指令获取集群运转事务所运用的一切镜像。

到这里咱们发现,假设库房中镜像的数量太多,其实也能够选用另一种思路,先运用类似“kubectl describe pods –all-namespaces| grep image”这样的指令,逐一集群查询到一切线上事务运用的镜像,然后关于这些镜像定向的进行缝隙检测。

怎么修正

面对缝隙的迸发,一切人都希望能充沛了解这个缝隙,并在第一时间运用对应的补丁处理问题。不幸的是:一方面,软件开发和测验需求时间周期,缝隙的修正不会那么快;另一方面,在微服务架构下,受影响的镜像可能会十分多,这同样给缝隙的修正带来很大的应战。

因而,在缝隙修正的一起,咱们能够通过主张的缓解办法进行缓解,例如,关于log4j2缝隙,能够添加jvm发动参数:

-Dlog4j2.formatMsgNoLookups=true进行暂时的缓解。

但是,在云原生架构下,运用程序的发动指令以及运转参数等信息,都是直接打包在镜像中,这样又回到前文说到的问题,假设受影响的镜像数量十分庞大的时分,这种暂时的缓解办法在施行起来也将面对严重的应战。

在云原生架构下,咱们看到能够有几种针对缝隙的缓解性操作:

(1)修正线上运转环境

咱们能够通过kubectl edit pod…指令,修正线上服务Pod的运转参数,完成缝隙的缓解。针对批量的运转参数修正,咱们也推出了一个开源的东西 。

值得注意的是,上述处置办法在修正完参数之后,会主动重启服务,用户在运用时,需评价相应的重启危险。

从重大漏洞应急看云原生架构下的安全建设与安全运营(上)

图3

(2)运用缝隙特性缓解

以log4j2为例,这是个远程恣意代码履行的缝隙,简单来说,便是在打印日志时,假设发现日志内容中包括要害词 ${,那么这个里面包括的内容会当做变量来进行替换,导致进犯者能够恣意履行指令。

因而在进行缝隙缓解时,能够运用缝隙的这一特性,将缓解指令通过缝隙传进去,完成运用缝隙来缓解缝隙的效果。

这种办法针对不同的缝隙,不具有普适性。

(3)缝隙运用的阻挠

前面两种操作,都是从缝隙本身动身,通过缓解办法,使得缝隙不能被运用。别的一种缓解办法便是一旦前述缓解办法失效或被绕过,能够在缝隙运用的要害途径上,进行操作的阻拦,然后到达缝隙缓解的效果。

这种操刁难安全才能有必定的依靠,一方面,安全才能需求能够检测出缝隙运用的行为,另一方面,需求能够精准的对进程行为进行阻断。尤其是关于log4j2这种恣意代码履行的缝隙,缝隙运用的检测对安全才能有着较高的要求。

通过上述几种暂时缓解办法后,接下来咱们需求做的便是,结合线上环境运用的镜像以及事务重要性和优先级等要素,有条有理的将受影响的组件晋级至官方发布的稳定修正版别。

云原生架构下安全运营的应战和优势

从上述缝隙处置的过程咱们能够发现,云原生架构下在缝隙的处置修正上,容器环境既面对必定的应战,一起也有着必定的优势。

应战

**1)镜像数量大。**一方面,因为log4j2本身便是运用规划很广的组件,而且在微服务架构下,运用又会进行很多细粒度的微服务拆分,因而在库房中会受影响的镜像会涉及到很多个Repositories;另一方面,因为DevOps等灵敏开发流程的运用,镜像库房中的每一个镜像又会有很多个版别(每个Repository有很多个Tags)。因而,在缝隙处置的过程中会发现,扫描出来的受影响镜像数量巨大。

2)僵尸镜像。所谓的僵尸镜像,其实能够了解为存储在库房中的旧版别镜像,或者过期镜像,现已简直不会再被运转运用。假设对库房中的镜像没有很好的办理机制,这种僵尸镜像的数量也会十分大。这种现象其实也很好了解,DevOps带来事务快速的迭代,天然就会产生很多的过期镜像。

在惯例的安全运营中,这些僵尸镜像原则上是应该及时被铲除的(不需求考虑备份回滚的问题,代码库房会有),这种铲除操作不只是是需求覆盖镜像库房,同样适用于主机上的僵尸镜像。

3)不可变根底设施。云原生架构的一个典型特征便是不可变的根底设施,所谓的不可变根底设施,是指一旦布置了服务之后决不允许被修正。假设需求以任何办法更新、修正或修正某些内容,则需求修正相对应的镜像,构建全新的服务镜像来替换旧的需求改动的服务镜像,通过验证后,运用新的镜像重新布置服务,而旧的则会被删除。

这种特性,给咱们针对线上事务在进行缝隙缓解的时分带来了很大的不方便。一方面体现在修正运用的运转参数和环境变量等信息上;另一方面体现在这种缓解办法的修正,会引发运转时安全的再次告警,因为这种操作违反了不可变根底设施的要求,不是正常的事务操作流程。

优势

• 财物可视化,快速定位。财物问题一直是安全建造和安全运营中重要的问题,一起也是最让人头疼的问题。云原生架构很好的处理了财物的问题,通过Kubernetes等编列平台以及镜像库房等组件,能够让咱们快速的进行财物梳理、问题定位。

• 流程主动化,快速收效。Kubernetes等编列平台供给了一整套的事务主动化办理方案,包括配置办理、服务编列、任务办理等。因而,关于缝隙的修正能够完成快速分发和对应的灰度晋级等。

• 安全左移,快速操控。能够在CI/CD等多个环节进行安全左移检测,镜像入库前的检测,阻挠包括缝隙镜像推送到库房,下降增量危险;在运转时进行准入检测,关于包括缝隙危险的镜像,阻挠其发动运转,减小线上环境新增暴露面。

• 微服务架构。在微服务架构下,运用间相对独立,这给缝隙修正带来的优点,一方面,针对某个镜像的缝隙修正,影响规划小,进步缝隙修正功率;另一方面,微服务架构下,服务功用单一,很多重复的功用会形成独立服务,这样减小了修正数量。

这次缝隙的迸发,给咱们在云原生安全建造和运营上敲响了警钟,以该事情作为切入点,企业在云原生架构的落地过程中,需求体系全面的考虑安全才能的建造和运营了。咱们将在下一篇文章中,结合本身实践,体系的分享咱们关于云原生架构下安全建造和安全运营的考虑。

关于腾讯容器安全服务(TCSS)

腾讯容器安全服务(Tencent Container SecurityService, TCSS)供给容器财物办理、镜像安全、集群安全、运转时侵略检测等安全服务,保证容器从镜像构建、布置到运转时的全生命周期安全,帮助企业构建容器安全防护体系。

腾讯从2018年9月30日发动全面云原生上云战略,至今现已有数千万核心规划。容器安全服务产品团队结合业内最大规划容器集群安全管理运营经历打磨产品,推动行业标准及规范的编写拟定,并首发《腾讯云容器安全白皮书》,对国内容器环境安全现状进行分析总结,助力云原生安全生态的标准化和健康发展。

关于咱们

即刻关注【腾讯云原生】大众号,回复“虎虎生威”,领取腾讯定制红包封面~

福利:

①大众号后台回复【手册】,可获得《腾讯云原生路线图手册》&《腾讯云原生最佳实践》~

②大众号后台回复【系列】,可获得《15个系列100+篇超实用云原生原创干货合集》,包括Kubernetes 降本增效、K8s 功能优化实践、最佳实践等系列。

③大众号后台回复【白皮书】,可获得《腾讯云容器安全白皮书》&《降本之源-云原生本钱办理白皮书v1.0》

③大众号后台回复【光速入门】,可获得腾讯腾讯云专家5万字精华教程,光速入门Prometheus和Grafana。