
Описание CVE-2017-1002101 с примером "эксплойта"/эскейпа
Узнав о проблеме и следуя этому руководству, я захотел изучить её подробнее. Этот репозиторий содержит несколько развёртываний подов и вспомогательные shell-скрипты, которые демонстрируют механизм атаки самым простым способом, чтобы администраторы и операторы Kubernetes могли полностью понять серьёзность и потенциальные риски. Вы должны быть аутентифицированным пользователем или иметь возможность управлять спецификацией/шаблоном пода при создании, поэтому этот уход вряд ли будет анонимным, если не комбинировать его с другими атаками, например этой.
Когда kubelet монтирует volume/secret/configmap и т.д., он неправильно следует по симлинкам внутри volume к местам за пределами допустимой области. Поскольку kubelet работает от root, это означает, что его можно обманом заставить смонтировать привилегированные части хост-файловой системы внутри контейнера непривилегированного пода.
Мой подход заключался в использовании одного пода с двумя «обычными» контейнерами. Один контейнер создаёт симлинк на / или , а другой циклически перезапускается до тех пор, пока это не удастся (заставляя volume перемонтироваться и следовать по пути симлинка), что позволяет пользователю выполнить exec во второй контейнер и получить доступ к точке монтирования.
/home/ubuntuПримечание: эти примеры работают без изменений на хосте Ubuntu 16.04, но их можно легко адаптировать для других конфигураций.
./run-as-root.sh, если ваш кластер «стандартный»../run-as-root-no-chroot.sh или ./run-as-user-1000.sh для других вариантов.Это действительно ситуация, требующая обязательного исправления. К сожалению, обходные пути, перечисленные здесь, не очень практичны для большинства пользователей. Почти все предыдущие версии уязвимы.