
Exploit per la vulnerabilità CVE-2021-25741 di Kubernetes che consente il mount del filesystem host nei pod tramite una race condition, con script di deployment e dettagli tecnici.
È un exploit per la vulnerabilità CVE-2021-25741. Questa vulnerabilità consente di montare il filesystem di Node all'interno di un nuovo POD con privilegi di lettura-scrittura.
Puoi leggere ulteriori informazioni sulla vulnerabilità qui:
https://security.googleblog.com/2021/12/exploring-container-security-storage.html
Non sono l'autore di questa vulnerabilità e ho semplicemente creato un exploit.
Grazie a @russtone e @maximusfox per l'aiuto nello sviluppo dell'exploit.
Versioni vulnerabili del kubelet:
Basta eseguire run.sh e attendere :) Lo sfruttamento richiederà del tempo (per me sono stati 10-20 minuti) perché si basa su una condizione di gara (race condition).
chmod +x run.sh; ./run.sh

Quando ricevi il messaggio "Success" puoi collegarti al POD e trovare il filesystem di Node nella directory . Per il collegamento puoi usare il seguente comando:
/mnt/datakubectl exec -i -t cve202125741 -c mount-container -- /bin/sh

L'exploit è composto da 2 parti:
File YAML con la configurazione del pod che sfrutta la vulnerabilità. A causa della condizione di gara non funziona sempre, quindi dovresti eseguirlo in un ciclo.
Script che distribuisce pod.yaml, verifica il risultato e lo ridistribuisce se necessario.
Come binario renameat2 con l'opzione RENAME_EXCHANGE ho usato questo codice: https://gist.github.com/eatnumber1/f97ac7dad7b1f5a9721f
Puoi compilarlo da solo e sostituirlo in pod.yaml se vuoi:
gcc renameat2.c -o renameat2
base64 renameat2
Soluzioni:
Soluzioni: