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 по сути запускал код без проверки, от всех, кто мог достучаться. А таких — тысячи, как показало сканирование.