
Exploit para la vulnerabilidad CVE-2021-25741 de Kubernetes que permite montar el sistema de archivos del host en pods mediante una condición de carrera, con scripts de despliegue y detalles técnicos.
Es un exploit para la vulnerabilidad CVE-2021-25741. Esta vulnerabilidad permite montar el sistema de archivos de Node dentro de un nuevo POD con privilegios de lectura y escritura.
Puedes leer más sobre la vulnerabilidad aquí:
https://security.googleblog.com/2021/12/exploring-container-security-storage.html
No soy el autor de esta vulnerabilidad, solo he creado el exploit.
Gracias a @russtone y @maximusfox por la ayuda con el desarrollo del exploit.
Versiones vulnerables del kubelet:
Solo ejecuta run.sh y espera :) La explotación tomará algo de tiempo (para mí fueron 10-20 minutos) porque se basa en la condición de carrera.
chmod +x run.sh; ./run.sh

Cuando recibas el mensaje "Success" puedes conectarte al POD y encontrar el sistema de archivos de Node en el directorio . Para conectarte puedes usar el siguiente comando:
/mnt/datakubectl exec -i -t cve202125741 -c mount-container -- /bin/sh

El exploit tiene 2 partes:
Archivo YAML con la configuración del pod que explota la vulnerabilidad. Debido a la condición de carrera no funciona siempre, por lo que debes hacerlo en un bucle.
Script que despliega pod.yaml, comprueba el resultado y lo vuelve a desplegar si es necesario.
Como binario renameat2 con la opción RENAME_EXCHANGE usé este código: https://gist.github.com/eatnumber1/f97ac7dad7b1f5a9721f
Puedes compilarlo tú mismo y reemplazarlo en pod.yaml si quieres:
gcc renameat2.c -o renameat2
base64 renameat2
Soluciones:
Soluciones: