
Глубокий технический анализ CVE-2025-1974 (IngressNightmare), критической RCE в валидирующем контроллере допуска ingress-nginx для Kubernetes, включая первопричину, цепочку эксплуатации и руководство по обнаружению.
В данном документе представлено исследование уязвимости CVE-2025-1974, затрагивающей компонент ingress-nginx (validating admission controller) для Kubernetes.
CVE-2025-1974 — критическая уязвимость (CVSS 3.1 9.8), представляющая собой unauthenticated Remote Code Execution (RCE) в контексте процесса ingress-nginx. При выполнении атаки злоумышленник, имеющий доступ к pod-сети (или способ доставить AdmissionReview к validating webhook), может добиться выполнения произвольного кода в pod’е контроллера, что потенциально ведёт к раскрытию Secrets и захвату кластера.
Ingress-nginx — один из самых распространённых контроллеров Ingress в Kubernetes (оценки показывали использование в десятках процентов кластеров), поэтому практический импакт уязвимости очень высок. Описание, технический анализ и официальные рекомендации по фиксам опубликованы Kubernetes, исследователями Wiz и рядом вендор-блогов.
Пошагово разобрать CVE-2025-1974 и подготовить материалы, необходимые для write-up:
Данное исследование проводится исключительно в образовательных и этичных целях и ориентировано на тестовые/контролируемые среды.
Ни при каких условиях не запускать эксплойты/PoC против чужих кластеров или публично-доступных инстансов без письменного разрешения владельца. Публикация полностью рабочей «weaponized» PoC в открытом виде сильно повышает риск злоупотреблений — в публичной части лучше приводить safe-PoC и методологию. (Официальные advisories и вендоры также подчёркивают осторожность при распространении эксплойтов).
cpe:2.3:a:kubernetes:ingress-nginx_controller:<version> — уязвимые версии ingress-nginx (в advisories указаны конкретные версии; обновите значения при финальной публикации).Условия конфигурации, при которых уязвимость актуальна:
Краткое резюме.
Уязвимость обнаружена в компоненте Validating Admission Controller контроллера Ingress-NGINX и связана с тем, как этот компонент формирует и проверяет временную конфигурацию NGINX на основе входящих Ingress / AdmissionReview. В процессе обработки контроллер генерирует nginx.conf и запускает проверку конфигурации (nginx -t). При недостаточной санитизации полей Ingress/AdmissionReview атакующий может подставить специально подготовленные фрагменты, которые попадут в сгенерированный конфиг и в результате приведут к выполнению команд внутри процесса контроллера — то есть к удалённому выполнению кода (RCE) в pod’е ingress-nginx.
AdmissionReview/Ingress объекты, принимаемые validating webhook контроллера, становятся исходными данными для генерации конфигурации NGINX (включая поля аннотаций, backend-настройки и пр.).Ingress или прямой AdmissionReview может внедрить управляемые строки в шаблоны/фрагменты конфигурации. При проверке/загрузке такого nginx.conf процесс проверки (nginx -t) и последующие операции с файлом конфигурации могут привести к исполнению произвольного кода, записи/запуску файлов или запуску команд в контексте контроллера.AdmissionReview до validating webhook (доступ из pod-сети или прямой сетевой доступ); отсутствие компенсирующих мер — NetworkPolicy, RBAC-ограничений или дополнительной аутентификации webhook. В ряде сценариев обход прав Create/Update возможно путём отправки crafted AdmissionReview напрямую к webhook.
Успешная эксплуатация даёт исполнение кода в контейнере ingress-nginx, что, как правило, позволяет:
ingress-nginx-controller-admission и сервису ingress-nginx-controller от нестандартных источников (в репортах — от контейнеров типа alpine), чего при нормальной работе не должно быть.nginx -t и внезапные перезапуски контроллера, а также неожиданные операции записи файлов от процесса ingress-nginx.Ingress-NGINX — один из наиболее широко используемых контроллеров Ingress в Kubernetes (широко применяется для организации внешнего доступа к сервисам). Контроллер выступает как обратный прокси: принимает внешний трафик и проксирует его к соответствующим Service/Pod на основе набора правил Ingress. Проект Ingress-NGINX пользуется большой популярностью и имеет значительную долю установки в интернет-доступных кластерах.
Ingress-NGINX в документации Kubernetes приводится как эталонный пример контроллера Ingress. По оценкам, значительная доля открытых кластеров применяют именно его; в некоторых исследованиях указывается, что порядка 41% публично доступных кластеров используют Ingress-NGINX. Именно из-за широкой распространённости и центральной роли в маршрутизации трафика уязвимости в этом компоненте имеют высокий практический импакт.
validate.nginx.ingress.kubernetes.io). Это делает его лёгким для обращения изнутри кластера.Ingress / AdmissionReview, где определённые поля содержат вредоносные строки, не прошедшие надлежащую фильтрацию.nginx.conf на основе этих входных данных и выполняет nginx -t / другие операции проверки.Такие уязвимости особенно опасны в связке с другими дефектами: компрометированный pod (или SSRF в публичном приложении) + экспонированный validating webhook даёт высокий шанс полного взлома. Поэтому анализ инцидентов должен учитывать цепочку зависимостей и потенциальных векторов, а не только версию ingress-nginx.