随着云计算技术的蓬勃发展,传统上云实践中的应用升级缓慢、架构臃肿、无法快速迭代等“痛点”日益明显。能够有效解决这些“痛点”的云原生技术正蓬勃发展,成为赋能业务创新的重要推动力,并已经应用到企业核心业务。然而,云原生技术在创造效益的同时,却也面临着严峻的安全问题,本文的主要内容是对云原生安全问题及防御技术做浅析。
注:CNCF对云原生的定义是“云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。”云原生技术正在蓬勃发展中,CNCF的云原生全景图如图1所示。
图1 CNCF云原生全景图
云原生环境面临着严峻的安全风险问题。攻击者可能利用的重要攻击面包括但不限于:容器运行时、容器编排平台、微服务架构Web应用、服务网格、Serverless。下面对这些重要的攻击面进行梳理。
首先来看市场情况,据2020年的数据统计,Docker的市场占有率为50%(同比2019年下降逾29%),而CRI-O的市场占有率从4%上升到17%。
接着进行安全问题分析,以Docker为例进行容器运行时的安全问题分析,如表1所示。
表 1 容器运行时安全问题分析表
类别 | 案例 | 备注 |
针对容器镜像的供应链攻击 |
镜像漏洞利用 |
如CVE-2019-5021,Alpine Docker镜像漏洞 |
镜像投毒 |
如恶意EXP镜像、木马镜像 |
|
容器逃逸 |
危险配置导致的容器逃逸 |
如利用特权容器逃逸 |
危险挂载导致的容器逃逸 |
如果容器或Pod在启动时将宿主机的核心目录以写权限挂载(如/root, /proc, /etc等),则攻击者进入容器后可修改敏感文件并逃逸 |
|
相关程序漏洞导致的容器逃逸 |
攻击者可能利用的Docker漏洞包括但不仅限于: (1)CVE-2019-5736(Docker runC容器逃逸漏洞) (2)CVE-2019-14271(Docker cp容器逃逸漏洞) (3)CVE-2019-15752(Docker host模式容器逃逸漏洞) |
|
内核漏洞导致的容器逃逸 |
攻击者可能利用的Linux内核漏洞包括但不仅限于: (1)CVE-2016-5195(“脏牛”漏洞) (2)CVE-2018-18955(Linux user namespace内核提权漏洞) |
|
DDoS攻击 |
未使用Linux的cgroups限制容器资源,致使DDoS攻击生效 |
容器运行时在默认情况下未对容器内进程的资源使用进行限制,当同一个宿主环境下同时运行多个容器时,如果一个服务特别耗资源或者负载突然陡增时,其对资源的抢占往往会影响到同一个环境中其他服务的正常运行。 |
有研究团队为了在轻量化和安全性之间达到较好的平衡,在“传统容器”的基础上,为“容器-主机”或“容器-容器”之间提供额外的保护,落地了“安全容器”。典型的“安全容器”技术包括了Kata、gVisor、Firecracker,但它们仍面临着已知或未知的容器逃逸攻击的风险。
首先来看市场情况,据2020年的数据统计,Kubernetes(简称K8s)的市场占有率为75%,而OpenShift从前一年的9%份额,提升到15%的份额(OpenShift以Docker作为容器引擎驱动,以K8s作为容器编排引擎组件)。由此可见,K8s已经成为目前业界容器编排的事实标准。
接着进行安全问题分析,以K8s为例进行容器编排平台的安全问题分析,图2为阿里云提出的“云上容器ATT&CK攻防矩阵”。由图可知,黑客在攻击K8s集群的过程中有很多手段,K8s集群的攻击面较大。
图 2 阿里云云上容器ATT&CK攻防矩阵
微服务Web应用在解决传统单体应用不足之处的同时放大了攻击面(如端口和东西流量均显著增多),引入了安全隐患。比如,对于微服务Web应用,传统单体应用所面临的OWASP Top10等安全漏洞依旧存在,并且受到架构特点的影响,敏感信息泄露、失效的身份认证、失效的访问控制等漏洞类型的风险愈加突出。
服务网格作为一种云原生应用的体系结构模式,应对了微服务架构在网络和管理上的挑战,也推动了技术堆栈分层架构的发展。从分布式负载均衡、防火墙的服务的可见性,服务网格通过在各个架构层提供通信层来避免服务碎片化,以安全隔离的方式解决了跨集群的工作负载问题,并超越了Kubernetes容器集群,拓展到运行在裸机上的服务。服务网格与微服务在云原生技术栈中是相辅相成的两部分,前者更关注应用的交付和运行时,后者更关注应用的设计与开发。若未在服务网格中采用双向TLS认证,服务间容易受到中间人攻击。若未做东西向、南北向的认证鉴权,服务间容易受到越权攻击。
Serverless(无服务器运算)又被称为函数即服务(Function-as-a-Service,缩写为 FaaS),是云计算的一种模型。以平台即服务(PaaS)为基础,无服务器运算提供一个微型的架构,终端客户不需要部署、配置或管理服务器服务,代码运行所需要的服务器服务皆由云端平台来提供,Serverless 使得底层运维工作量进一步降低,业务上线后,也无需担忧服务器运维,而是全部交给了云平台或云厂商。Serverless应用的示意图如图3所示。
图 3 Serverless应用示意图
与传统的单体应用相似,Serverless应用容易受到典型的Web攻击;此外,在这特殊的应用场景下,Serverless用户可能会遭受DoW(Denial of Wallet)这类平台账户的拒绝服务攻击,从而蒙受经济损失。
对于云原生安全问题的防御,业界提出了不同的实践方法。例如,绿盟的安全研究人员认为应该践行以下三项原则:
(1)安全左移:在云原生建设初期将安全投资更多地放到开发安全、包括安全编码供应链(软件库、开源软件)安全、镜像安全;
(2)聚焦“不变”:容器对应的镜像、文件系统都是不变的,由相同或继承的镜像启动的容器进程及其行为是相似的,用于微服务的容器进程是少数且其行为是可预测的,可以通过学习进行画像;
(3)业务安全:保护最贴近最终价值且处于最顶层的业务。
亦有字节跳动的安全研究人员指出应该重点通过互联网的三大核心要素:计算、存储、网络开展防御工作,其观点如下:
(1)容器安全的本质是对Linux Kernel安全机制的充分利用;
(2)eBPF技术将蓬勃发展,在syscall和网络监控领域广泛使用;
(3)动态防御的重点是采集、可视化、关联分析和响应的全流程建设。
目前,腾讯安全已搭建了包含安全治理、数据安全、应用安全、计算安全、网络安全等五个领域的完备云原生安全防护体系。
经过上述分析,可以发现“云原生安全”的治理需要综合的解决方案。笔者认为在云原生安全防护体系的建设过程中应做好以下几项工作:
(1)结合云原生技术的具体落地情况开展并落实最小权限、纵深防御工作
对于云原生环境中的各种组成部分,均可贯彻落实“安全左移”的原则,进行安全基线配置,防范于未然。而对于微服务架构Web应用以及Serverless应用的防护而言,其重点是应用安全问题,如表2所示。
表 2 云原生环境各组成部分防御方法梳理
安全问题来源 |
防御方法 |
容器运行时 |
代码审计 镜像扫描 镜像加固 安全基线配置 |
容器编排平台 |
安全基线配置 |
微服务架构Web应用 |
应用安全 微隔离(云原生防火墙、云原生应用防火墙模式) |
服务网格平台 |
与WAF、API网关等机制进行联动 安全基线配置 |
Serverless |
应用安全 安全基线配置 |
(2)围绕云原生应用的生命周期来进行DevSecOps建设
以当前的云原生环境的关键技术栈“K8S + Docker”举例进行分析,如图4所示。应该在容器的全生命周期注重“配置安全”,在项目构建时注重“镜像安全”,在项目部署时注重“容器准入”,在容器的运行环境注重云计算的三要素“计算”“网络”以及“存储”等方面的安全问题。
图 4 围绕云原生应用的生命周期构建安全防护体系
(3)围绕攻击前、中、后的安全实施准则进行构建
在实际落地时,可依据安全实施准则对攻击前、中、后这三个阶段开展检测与防御工作。
表 3 对攻击前、中、后这三个阶段开展检测与防御工作
攻击前 |
攻击时 |
攻击后 |
资产清点 镜像安全 基线合规 资产加固 |
镜像运行控制 容器安全 网络安全 运用K8S集群的安全机制 主机安全 |
日志审计 |
“攻击前”阶段工作
在检测方面应注重的工作包括了资产清点和镜像安全工作。资产清点的核心工作是资产版本比对。资产版本比对工作有助于防御工作的开展;在防御方面应注重的工作包括了基线合规工作和资产加固工作。基线合规工作有助于收敛暴露给外部的攻击面。
“攻击时”阶段工作
在检测方面应关注的检测项可包括宿主机上与容器内的异常行为监控(Docker容器、微服务的功能一般是较为固化的,若发现文件、网络、进程等方面的异常行为,应予以警惕;为了检测这类异常行为,可运用现阶段较为成熟的主机入侵检测技术经验并选择合适的算法对宿主机与容器进行异常行为监控)以及容器准入工作的合规性;在防御方面应注重的工作可包括:在宿主机上以及容器内做文件权限控制以及在Docker宿主机充分利用Linux内核的安全能力(可选用的安全技术包括了:可做资源隔离的Namespace、可用黑白名单限定进程调用的Seccomp、可限定容器能力的Capability、可限定应用程序访问控制权限的Apparmor)。
“攻击后”阶段工作
在检测方面应注重操作日志审计。在具体实践时,可通过日志收集容器将业务容器的日志统一发送到大数据平台,进行分析、告警;在防御方面应注重应急响应。在具体实践时,若发现生产环境受到了攻击,应及时进行应急响应,提防危害扩大化。
(4)改造并综合运用现有云安全技术
不应将“云原生安全”视为一个独立的命题,为云原生环境提供更多支持的主机安全、微隔离等技术可赋能于云原生安全,如图5所示。
图 5 容器安全、主机安全与微隔离赋能云原生安全
云原生技术正逐步成熟,容器、微服务、声明式API等代表技术的应用正逐步落地,生态正逐步健全。但云原生环境面临着严峻的安全问题,安全技术亟待发展。预计在未来24-36个月内云原生安全技术将高速发展。
本文介绍了云原生安全问题及防御技术方法。经过比较可以发现,云原生安全技术与传统的云安全技术有着异同。“云原生安全”的治理需要综合的解决方案。在落地云原生安全技术时,可从以下几个方面做考虑:单位的具体落地情况、云原生应用的生命周期、安全运维准则、对现有云安全技术的改造与综合运用。
安全必须为业务服务。当业务需要现代化时,安全也要顺势而为进行变革,不要沦为业务的阻碍。在云原生时代,DevSecOps理念及产品将逐渐落地应用。云原生安全与信息基础设施将深度融合,提供SECaaS 也将成为一大发展趋势。
[1] [绿盟 云原生安全技术报告]
https://www.nsfocus.com.cn/html/2021/92_0113/146.html
[2] [字节跳动安全范儿沙龙——业务安全攻与防 / 容器安全与动态防御]
https://mp.weixin.qq.com/s/tdTDlZIftrI6xYoJl5fSlA
[3] [腾讯 除了云原生,2021 年还有这八大趋势值得关注]
https://xw.qq.com/cmsid/20201026A09M7B00
[4] 云上容器 ATT&CK 矩阵详解,阿里云助力企业容器化安全落地
https://blog.csdn.net/csdnnews/article/details/106821667
[5] 《云原生服务网格Istio 原理、实践、架构与源码解析》(张超盟、章鑫、徐中虎、徐飞编著)
本文作者:安全狗
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/158886.html