
Пример кода для использования эксплойта CVE-2019-5736 для майнинга биткоинов без привязки к исходному контейнеру или пользователю.
Здесь используются две библиотеки с открытым исходным кодом:
Протестировано на Kali Linux, с Docker версии 18.03.0 и RunC версии 1.0.0-rc5.
Побег из Docker-контейнера запускает несколько демонов майнинга, которые принадлежат процессу #1 (ядру). Это означает, что ресурсы компьютера используются для майнинга, но скрипт/вычислительные ресурсы не связываются с вашим контейнером.
Это использует уязвимость CVE-2019-5736. Когда контейнер запускается, Docker использует docker-runc для его запуска, и мы получаем доступ к PID runc, который запускает наш контейнер. Затем мы передаем выполнение другой программе (overwrite_runc) с символической ссылкой на бинарный файл runc. Эта символическая ссылка указывает нам напрямую на файловый дескриптор бинарного файла runc. Это позволяет нам открыть файловый дескриптор runc для записи и перезаписать его. Перезаписав его вредоносным скриптом, когда контейнер завершает работу, он выполняет скрипт с правами root, что позволяет нам запустить криптомайнер.
Этот скрипт перезаписывает бинарный файл runc на тестовой машине, поэтому перед запуском разумно сделать копию оригинального файла.
Не используйте это на реальных уязвимых системах.