今日长缨在手,何时缚住苍龙。这篇文章主要讲述浅谈容器逃逸相关的知识,希望能为你提供帮助。
与其他虚拟化技术类似,逃逸是最为严重的安全风险,直接危害了底层宿主机和整个云计算系统的安全。
“容器逃逸”是指以下一种过程和结果:首先,黑客通过劫持容器化业务逻辑或直接控制(CaaS等合法获得容器控制权的场景)等方式,已经获得了容器内某种权限下的命令执行能力;黑客利用这种命令执行能力,借助一些手段进而获得该容器所在的直接宿主机上某种权限下的命令执行能力。
1.不安全配置导致的容器逃逸容器社区一直在努力将纵深防御、最小权限等理念和原则落地。无论是细粒度权限控制还是其他安全机制,用户都可以通过修改容器环境配置或在运行容器时指定参数来调整约束,但如果用户为容器设置了某些危险的配置参数,就为黑客提供了一定程度的逃逸可能性。
2.不安全挂载导致的容器逃逸为了方便宿主机与虚拟机进行数据交换,几乎所有主流虚拟机解决方案都会提供挂载宿主机目录到虚拟机的功能。容器同样如此。然而,将宿主机上的敏感文件或目录挂载到容器内部——尤其是那些不完全受控的容器内部,往往会带来安全问题。尽管如此,在某些特定场景下,为了实现特定功能或方便操作(例如为了在容器内对容器进行管理,将Docker Socket挂载到容器内),人们还是选择将外部敏感卷挂载入容器。随着容器技术应用的逐渐深化,挂载操作变得愈加广泛,由此而来的安全问题也呈现上升趋势。
Docker Socket是Docker守护进程监听的UNIX域套接字,用来与守护进程通信——查询信息或下发命令。如果在黑客可控的容器内挂载了该套接字文件(/var/run/docker.sock),容器逃逸就相当容易了。
3.相关程序漏洞导致的容器逃逸所谓相关程序漏洞,指的是那些参与到容器生态中的服务端、客户端程序自身存在的漏洞。
4.内核漏洞导致的容器逃逸Linux内核漏洞的危害之大、影响范围之广,使得它在各种安全话题中都占据非常重要的一席。无论是传统的权限提升、Rootkit(隐蔽通信和高权限访问持久化)、DoS,还是如今容器逃逸,一旦有内核漏洞加持,利用条件往往就会从不可行变为可行,从难利用变为易利用。事实上,无论安全场景怎样变化,我们对内核漏洞的利用往往都是从用户空间非法进入内核空间开始,到内核空间赋予当前或其他进程高权限后回到用户空间结束。
【浅谈容器逃逸】从操作系统层面来看,容器进程只是一种受到各种安全机制约束的进程,因此从入侵防御两端来看,容器逃逸都遵循传统的权限提升流程。黑客可以凭借此特点拓展容器逃逸的思路,一旦有新的内核漏洞产生,就可以考虑它是否能够用于容器逃逸;而防守者则能够针对此特征进行防护和检测,如宿主机内核打补丁,或检查该内核漏洞利用有什么特点。
推荐阅读
- zookeeper设置ACL后 kafka如何连接()
- Prometheus监控步骤
- 王道Java网络编程实战详解三TCP完结
- Linux系统下 MYSQL数据库中的数据库文件在本机内迁移 (需暂停服务的方式)
- 客快物流大数据项目(六十八)(工作流调度)
- Linux 环境下 javac 编译错误( 编码UTF8的不可映射字符(编码UTF8/GBK的不可映射字符))
- coursera 视频总是缓冲或者无法观看的解决办法(Windows和Linux 系统环境)
- 移动应用的测试策略与测试架构
- PyQt5 中调用MySql接口失败( QSqlDatabase 组件)在Linux环境下如何修改