
Exploit para a vulnerabilidade CVE-2021-25741 do Kubernetes que permite a montagem do sistema de arquivos do host em pods por meio de condição de corrida, com scripts de implantação e detalhes técnicos.
É um exploit para a vulnerabilidade CVE-2021-25741. Esta vulnerabilidade permite montar o filesystem do Node dentro de um novo POD com privilégios de leitura e escrita.
Você pode ler mais sobre a vulnerabilidade aqui:
https://security.googleblog.com/2021/12/exploring-container-security-storage.html
Não sou o autor desta vulnerabilidade e apenas criei um exploit.
Agradecimentos a @russtone e @maximusfox pela ajuda no desenvolvimento do exploit.
Versões vulneráveis do kubelet:
Basta executar run.sh e aguardar :) A exploração levará algum tempo (para mim foram 10-20 minutos) porque é baseada em race condition.
chmod +x run.sh; ./run.sh

Quando você receber a mensagem "Success", pode anexar ao POD e encontrar o filesystem do Node no diretório /mnt/data.
Para anexar, você pode usar o seguinte comando:
kubectl exec -i -t cve202125741 -c mount-container -- /bin/sh

O exploit tem 2 partes:
Arquivo YAML com a configuração do pod que explora a vulnerabilidade. Devido à race condition, não funciona todas as vezes, então você deve executá-lo em um loop.
Script que implanta pod.yaml, verifica o resultado e o reimplanta se necessário.
Como binário renameat2 com a opção RENAME_EXCHANGE, usei este código: https://gist.github.com/eatnumber1/f97ac7dad7b1f5a9721f
Você pode compilá-lo por conta própria e substituí-lo em pod.yaml se quiser:
gcc renameat2.c -o renameat2
base64 renameat2
Soluções:
Soluções: