容器脱模技术在商业场景下的应用
发布时间:2023-02-25 12:41:17 所属栏目:云计算 来源:
导读:近年来,容器凭借能在任意环境中运行、开销低、秒级启动、镜像占用小等优势,越来越受世界各行业追捧。例如Google从Gmail到YouTube和Google搜索,几乎所有产品都在容器中运行,每个星期都要启动超过20亿个容器;京东
近年来,容器凭借能在任意环境中运行、开销低、秒级启动、镜像占用小等优势,越来越受世界各行业追捧。例如Google从Gmail到YouTube和Google搜索,几乎所有产品都在容器中运行,每个星期都要启动超过20亿个容器;京东构建了全球最大的容器集群,它的内部百分之九十九已被包装,当前已有20万的容器集群规模,保证了京东618和双11大促销。 但容器早期发展主要考虑易用性和功能实现,对安全考虑不是很充分,存在方方面面的安全隐患。随着容器的重要性与日俱增,容器安全的重要性也在不断提高。作为一项依然处于发展阶段的新技术,容器的安全性在不断地提高,也在不断地受到挑战。在其面临的所有安全问题当中,逃逸问题稳居首位——它直接影响到了承载容器的底层基础设施的机密性、完整性和可用性,危害了底层宿主机和整个云计算系统的安全。本文针对容器逃逸技术做全面的讲解。 1、容器安全风险 在容器时代,安全面临新旧威胁的双重挑战。一方面,传统的攻击手段依然有效,如注入漏洞、暴力破解、权限提升等。另一方面,新的攻击方式层出不穷,包括容器逃逸、投毒镜像、集群管理漏洞等,让人防不胜防。 1.1 容器作为轻量的虚拟化技术面临的主要安全风险 容器没有hypervisor,安全性强依赖于Host OS内核,受内核漏洞影响; 容器技术在OS层面实现了对计算机系统的虚拟化,在操作系统中,通过namespace技术对CPU、内存和文件系统等资源进行隔离、划分和控制,实现进程之间透明的资源使用,其安全性与内核隔离技术的成熟度强相关; 要从虚拟机攻破到宿主机或其他虚拟机,需要先攻破Hypervisor层,这是极其困难的。而docker容器与其它宿主机可能共享内核、操作系统*文件系统等资源,更有可能对其他容器、宿主机产生影响。容器的隔离层次更少,攻击路径更短,攻击面更大,危及整个系统的安全。 1.2 从容器生命周期看容器的关键安全风险 Docker作为容器引擎的代表,从它的使用流程可以看出,容器安全风险贯彻容器构建、部署、运行整个生命周期。例如,在构建阶段,可能会遇到的软件供应链攻击,包括基础镜像污染、CI工具攻击、制品库漏洞攻击等。在部署阶段也可能面临针对云原生基础设施平台攻击,包括开源组件编排工具、安全合规检查等。在运行时阶段,还可能面临针对云原生应用的攻击,包括逃逸攻击、安全隔离、注入漏洞、弱口令等。 容器的生命周期短,动态变化快,超过50%容器从上线到下架的整个生命周期不超过1天。快速检测和响应容器入侵事件,把损失降到最低,成为了一大安全难题。 1.3 历年容器安全漏洞情况表明,容器逃逸占比最高、影响较大 在容器集群中,若攻陷一个容器,就可以横向移动到其它容器上,或者逃逸到node节点上进行持久化,控制整个节点。下一步,攻击者还可以通过漏洞利用或者调用API SERVER控制整个集群。容器的攻击价值高,俨然成为攻击者眼中“香饽饽”。 从历年容器安全问题分布及容器运行时入侵事件统计分布可以看出,容器逃逸是用户最关注的安全问题,同时也是业务场景中遇到最多的安全问题。 2、容器逃逸技术及原理 容器逃逸,是指“流氓”容器尝试突破正常隔离环境限制,借助一些手段获得容器所在的直接宿主机、宿主机上的其他容器或集群内其他主机、其他容器的某种权限下的命令执行能力,进行恶意攻击或执行越权访问的行为。如下图所示,容器逃逸漏洞可能打穿容器节点,甚至整个集群。 容器逃逸的前提是已经获得了容器内某种权限下的命令执行能力,然后捅破隔离。容器的隔离技术不是新发明的,它借助Linux资源隔离的核心技术namespace来实现。 可以得知,Linux内核先天性隔离性不足,尽管目前namespace已经提供了非常多的资源隔离类型如PID、mount、network、UTS、IPC、user等,但除namespace外其它内核资源并未隔离或隔离不充分,其中包括一些系统的关键性目录(如/sys、/proc等),这些关键性的目录可能会泄露主机上一些关键信息,让攻击者利用这些信息对宿主机发起攻击,使得容器逃逸到宿主机。 特权模式在6.0版本的时候被引入Docker,其核心作用是允许容器内的root拥有宿主机的root权限。使用特权模式启动容器后(docker run --privileged),Docker容器被允许访问宿主机上的所有设备、可以获取大量设备文件的访问权限、可以执行mount命令进行挂载。当Docker管理员可通过mount命令将宿主机磁盘设备挂载进容器内部,即可获取对整个宿主机的文件读写权限,也可以通过写入计划任务等方式在宿主机执行命令,成功逃逸。 Linux内核自版本2.2引入了Capabilities机制,将传统的root用户的特权划分为30+个不同的单元,进行精细化管理。但如果Capabilities设置不正确,就会让攻击者有机可乘,实现权限提升。例如当容器以--cap-add=SYSADMIN启动,Container进程就被允许执行mount、umount等一系列系统管理命令,如果攻击者此时再将外部设备目录挂载在容器中就会发生Docker逃逸。可见,capabilities控制不当同样会引入容器逃逸,当前业界已识别SYSADMIN、DAC_READ_SEARCH、SYS_MODULE、SYS_PTRACE引入了逃逸漏洞。在docker中,如果发现一个或多个问题,可以通过修复问题来解决。但是,如果发现了一个或多个问题,就不能修复了。 (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐