
Эксплойт для уязвимости CVE-2021-25741 в Kubernetes, позволяющей монтировать файловую систему хоста в поды через состояние гонки, со скриптами развертывания и техническими деталями.
Это эксплойт для уязвимости CVE-2021-25741. Данная уязвимость позволяет смонтировать файловую систему Node внутри нового POD с правами чтения и записи.
Подробнее об уязвимости можно прочитать здесь:
https://security.googleblog.com/2021/12/exploring-container-security-storage.html
Я не являюсь автором этой уязвимости и просто создал эксплойт.
Спасибо @russtone и @maximusfox за помощь в разработке эксплойта.
Уязвимые версии kubelet:
Просто запустите run.sh и ждите :) Эксплуатация займёт некоторое время (у меня это заняло 10-20 минут), так как она основана на состоянии гонки.
chmod +x run.sh; ./run.sh

Когда вы получите сообщение "Success", вы можете подключиться к POD и найти файловую систему Node в каталоге . Для подключения можно использовать следующую команду:
/mnt/datakubectl exec -i -t cve202125741 -c mount-container -- /bin/sh

Эксплойт состоит из 2 частей:
YAML-файл с конфигурацией POD, который эксплуатирует уязвимость. Из-за состояния гонки он срабатывает не каждый раз, поэтому его нужно запускать в цикле.
Скрипт, который разворачивает pod.yaml, проверяет результат и повторно разворачивает его при необходимости.
В качестве бинарника renameat2 с опцией RENAME_EXCHANGE я использовал этот код: https://gist.github.com/eatnumber1/f97ac7dad7b1f5a9721f
Вы можете скомпилировать его самостоятельно и заменить в pod.yaml, если хотите:
gcc renameat2.c -o renameat2
base64 renameat2
Решения:
Решения: