Docker 容器逃逸案例分析
0. 前言
本文参考自《Docker 容器与容器云》
这个容器逃逸的 case 存在于 Docker 1.0 之前的绝大多数版本。
目前使用 Docker 1.0 之前版本的环境几乎不存在了,这篇分析的主要目的是为了加深系统安全方面的学习。
本案例所分析的 PoC 源码地址:shocker.c
1. 预备知识
1.1 Linux Capability
尝试用较为简单的话来说明 Linux 中 Capability 的概念。
为了解决在某些场景下,普通用户需要部分 root 权限来完成工作的问题。Linux 支持将部分 root 的特权操作权限细分成具体的 Capability,如果将某个 Capability 分配给某一个可执行文件或者是进程,即使不是 root 用户,也可以执行该 Capability 对应的特权操作。