
Codebeispiel für die Nutzung des Exploits CVE-2019-5736 zum Schürfen von Bitcoin ohne Verbindung zum ursprünglichen Container oder Benutzer.
Dies verwendet zwei Open-Source-Bibliotheken:
Getestet wurde dies auf Kali Linux mit Docker Version 18.03.0 und RunC Version 1.0.0-rc5.
Der Docker-Container-Ausbruch startet mehrere Mining-Daemons, die zu Prozess #1 (dem Kernel) gehören. Das bedeutet, dass die Ressourcen des Rechners für Mining genutzt werden, ohne dass das Skript/die Rechenressourcen Ihrem Container zugeordnet sind.
Dies nutzt CVE-2019-5736 aus. Wenn der Container ausgeführt wird, verwendet Docker docker-runc, um ihn zu starten, und wir greifen auf die PID von runc zu, die unseren Container ausführt. Dann übergeben wir die Ausführung an ein anderes Programm (overwrite_runc) mit dem Symlink zur runc-Binärdatei. Dieser Symlink führt uns direkt zum Dateideskriptor der runc-Binärdatei. Dadurch können wir den runc-Dateideskriptor zum Schreiben öffnen und überschreiben. Durch das Überschreiben mit einem bösartigen Skript wird beim Herunterfahren des Containers das Skript mit Root-Rechten ausgeführt, sodass wir einen Cryptominer starten können.
Dies überschreibt die runc-Binärdatei auf dem Testsystem, daher ist es klug, die echte zu kopieren, bevor Sie dies ausführen.
Verwenden Sie dies nicht auf echten, verwundbaren Systemen.