CVE-2018-15664漏洞分析报告

简介: 近日来自SUSE的安全专家Aleksa Sarai公布了编号为CVE-2018-15664的docker相关高危安全漏洞,该漏洞的CVSS评分为8.7,影响面涵盖所有docker发行版本,攻击者可利用该漏洞逃逸出容器读取或篡改host或其他任意容器内的文件,当前docker官方已经给出了临时方案以降低攻击面并将于下个release版本发布。

  近日来自SUSE的安全专家Aleksa Sarai公布了编号为CVE-2018-15664的docker相关高危安全漏洞,该漏洞的CVSS评分为8.7,影响面涵盖所有docker发行版本,攻击者可利用该漏洞逃逸出容器读取或篡改host或其他任意容器内的文件,当前docker官方已经给出了临时方案以降低攻击面并将于下个release版本发布。

漏洞描述

  该漏洞的根因是使用FollowSymlinkInScope函数时触发TOCTTOU(time-of-check-to-time-of-use) 文件系统的竞争条件缺陷引起的。这段函数代码在docker源码中使用较多,最为直接的就是docker cp命令。根据Sarai的描述:FollowSymlinkInScope的作用是解析容器中运行进程的文件路径,而攻击者可以利用解析校验完成后和操作执行间的空隙修改cp文件为一个符号链接对应的目标文件,这样理论上该攻击者可能会以root身份访问到host上或其他容器内的任意文件。
  根据官方说明,攻击者首先要拥有docker cp命令的使用权限和目标容器的访问权限,且攻击只可能发生在拷贝过程中解析文件完成到执行copy动作的毫秒级窗口内。攻击具备一定的难度和相当的专业背景,因此docker容器的相关使用者也不必过于惊慌,下面我们介绍此次漏洞的相关修复进展。

修复措施:

  所幸”docker cp”命令是此次漏洞影响范围内唯一暴露的对外接口,docker社区也很快给出了临时性的修复方案,在该方案中,官方建议用户在使用docker cp命令前执行docker pause命令,并在结束cp命令后执行docker unpause。在下个月的release版本中,pause和unpause命令会被自动加入到cp命令的运行过程中,通过冻结容器的方式阻断copy过程中对容器文件数据的篡改。
  同时,Sarai也指出了该漏洞的根本修复方法在于修改chrootarchive中的归档逻辑,需要使用root作为容器的rootfs(而不是父目录,因为其可能已经被攻击者控制)。因为chrootarchive属于docker底层源码,改动会影响如Tar/Untar等多个相关接口,因此至今还没有根本性的修复,不过当前相关修复已经有了pr提交,相信社区也已有了相应的补丁计划。另外Sarai也提出了在内核层面的修改方案,当然这样的底层修改短期内应该不会被应用到docker对该漏洞的修复中去。

短期如何防范:

  此次漏洞的攻击前提是攻击者拥有docker cp命令的使用权限,阿里云容器服务集群默认开启了基于RBAC的访问控制,非法用户是没有cp命令在容器内的访问权限的。对于可能非法获得cp命令访问权限的攻击者,我们给出如下几个建议:

1) 控制docker cp命令的使用
2) 在使用docker cp命令的前后执行docker pause和docker unpause
3) 合理利用如AppArmor等工具限制容器内对host上敏感目录的访问权限并监控相关审计

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
安全 Linux 数据安全/隐私保护
Intel TME和MKTME技术解析
# 市场需求 人们对透明全内存加密这个功能的需求主要来自对机密和敏感数据的保护。普通RAM里面储存的数据,在掉电之后,一般都以为是彻底消失了。但其实在一些复杂的离线攻击下,这些数据仍然是能被恢复出来并导致泄密;而持久性存储器(即外存,包括磁盘、SSD、eMMC等)的数据更加容易泄露。这些设备可能有硬件锁机制的保护,但是用户其实希望的是更细粒度的保护,比如per进程/容器/VM级的。 Int
6184 0
Intel TME和MKTME技术解析
win11关闭快速启动
win11关闭快速启动
661 0
|
编译器 Linux 调度
makfile的编译选项:CFLAGS、CPPFLAGS、LDFLAGS、LIBS
makfile的编译选项:CFLAGS、CPPFLAGS、LDFLAGS、LIBS
3520 0
|
存储 缓存 安全
virtiofs per-inode DAX 介绍
## 背景信息 1. 什么是 virtiofs? virtiofs 是一种用于在 host/guest 之间共享文件的文件系统,由 Redhat 开源,它使得不同 guest 之间能够以快速、一致、安全的方式共享同一个 host 目录树结构,目前广泛应用于 Kata Container 作为容器的 rootfs。 2. 什么是 DAX? DAX (Direct Access) 最初是针对于
3688 0
virtiofs per-inode DAX 介绍
|
数据采集 安全 测试技术
Burpsuite Scanner被动扫描生成安全评估报告
Burpsuite Scanner被动扫描生成安全评估报告
|
存储 虚拟化 云计算
|
JavaScript 前端开发 API
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第26天】前端技术的飞速发展让开发者在构建用户界面时有了更多选择。本文对比了Vue.js和Angular两大框架,介绍了它们的特点和优劣,并给出了在实际项目中如何选择的建议。Vue.js轻量级、易上手,适合小型项目;Angular结构化、功能强大,适合大型项目。
547 1
|
监控 NoSQL Java
几种主流的分布式定时任务,你知道哪些?
几种主流的分布式定时任务,你知道哪些?
|
Cloud Native 虚拟化 数据安全/隐私保护
云原生网络中的微隔离
【2月更文挑战第24天】
Java的在类内部调用本类方法
Java的在类内部调用本类方法
1122 0