Введение в уязвимость
Разрешение nodes/proxy GET в Kubernetes может показаться безобидным, поскольку предполагает только чтение данных. Однако, как оказалось, это разрешение может быть использовано для выполнения произвольного кода в любых подах кластера. Эта критическая уязвимость была обнаружена в популярных Helm-чартах, включая такие известные инструменты, как Prometheus, Datadog и Grafana.
Механизм уязвимости
Уязвимость основана на том, что разрешение nodes/proxy GET позволяет отправлять запросы к любым подам в кластере, используя прокси-сервер Kubernetes. Это, в свою очередь, может быть использовано для выполнения произвольного кода в этих подах. Данный механизм позволяет злоумышленнику получить доступ к конфиденциальным данным, а также потенциально взять под контроль весь кластер.
Воздействие на Helm-чарты
Уязвимость была обнаружена в нескольких популярных Helm-чартах, включая Prometheus, Datadog и Grafana. Эти чарты используют разрешение nodes/proxy GET для сбора метрик и других данных. Наличие этой уязвимости в таких широко используемых инструментах делает ее особенно опасной, поскольку потенциально затрагивает большое количество кластеров Kubernetes.
Реакция команды Kubernetes
Команда Kubernetes проинформирована об этой уязвимости, однако было принято решение не исправлять ее. Это решение может показаться удивительным, учитывая потенциальную опасность уязвимости. Однако, команда Kubernetes, вероятно, рассматривает данную проблему как вопрос конфигурации и использования, а не как проблему безопасности самого Kubernetes.
Проверка кластера на уязвимость
Чтобы проверить, подвержена ли ваша инфраструктура этой уязвимости, необходимо проанализировать конфигурацию кластера и Helm-чартов. В первую очередь, следует проверить, какие разрешения имеют Helm-чарты, установленные в вашем кластере. Если какие-либо из них используют разрешение nodes/proxy GET, необходимо оценить потенциальные риски и рассмотреть возможность ограничения этих разрешений или обновления чартов до версий, в которых данная уязвимость устранена.
Защита от уязвимости
Защита от этой уязвимости требует тщательного подхода к управлению разрешениями в кластере Kubernetes. Важно следить за тем, какие разрешения имеют различные компоненты и чарты, и ограничивать их до минимума, необходимого для функционирования. Кроме того, регулярные обновления Helm-чартов и компонентов кластера могут помочь снизить риск эксплуатации такой уязвимости.