10.2 C
Москва
Четверг, 3 апреля, 2025

43% облаков уязвимы — в Ingress NGINX нашли опасную брешь без аутентификации — Tproger

Ingress NGINX оказался уязвим для RCE без авторизации — под угрозой 43% облаков и тысячи Kubernetes-кластеров по всему миру

Исследователи из Wiz обнаружили серию критических уязвимостей в Ingress NGINX Controller для Kubernetes, получившую название IngressNightmare.

Среди них — CVE-2025-1097, CVE-2025-1098, CVE-2025-24514 и CVE-2025-1974. Все они позволяют атакующим без авторизации выполнить удалённый код (RCE) внутри кластера и получить доступ ко всем Kubernetes-секретам — вплоть до полного захвата кластера.

Уязвимость получила оценку 9.8 по шкале CVSS, что ставит её в категорию критических.

Особенно опасно то, что уязвимы более 43% публичных кластеров, включая системы Fortune 500. Исследователи нашли более 6500 открытых экземпляров с доступом к опасным компонентам по интернету.

Что пошло не так

Ingress NGINX — популярный ingress-контроллер, основанный на NGINX, с 18 000+ звёзд на GitHub. Его admission controller валидирует Ingress-объекты, генерируя временные конфиги NGINX и проверяя их через nginx -t.

Проблема в том, что этот компонент по умолчанию доступен без авторизации. А значит, любой контейнер внутри кластера может отправить туда запрос с вредоносной конфигурацией — и запустить чужой код.

Читать также:
Многопоточность: что это, использование в мобильных приложениях, как оптимизировать производительность

Как именно атакуют

Исследователи показали, что можно:

  • внедрить произвольные директивы в конфиг NGINX через аннотации, например auth-url или auth-tls-match-cn;
  • вставить shell-библиотеку в тело запроса, используя буферизацию клиента в NGINX;
  • обмануть nginx -t и заставить его загрузить вредоносную библиотеку, ссылаясь на временный файл через /proc.

Такой трюк позволяет удалённо загрузить и исполнить любой код, причём с правами, дающими доступ ко всем секретам кластера.

Что делать

Обновитесь до Ingress NGINX Controller 1.12.1 или 1.11.5. Если обновление невозможно сразу:

  • ограничьте сетевой доступ к admission webhook — пусть к нему обращается только API-сервер;
  • временно отключите admission controller через Helm (controller.admissionWebhooks.enabled=false) или вручную;
  • после обновления обязательно включите его обратно, он защищает конфигурации от ошибок.

Почему это важно

IngressNightmare — пример того, как простой по дизайну компонент может стать дверью в кластер. Использование nginx -t как проверочного инструмента в окружении с внешним вводом — опасная практика, которую нужно пересматривать.

Ingress Controller по сути запускал код без проверки, от всех, кто мог достучаться. А таких — тысячи, как показало сканирование.

НОВОЕ НА САЙТЕ