
Разбор: инъекция конфигурации ingress-nginx через аннотацию rewrite-target
Ключевые слова: CVE-2026-3288, уязвимость ingress-nginx, безопасность Kubernetes, инъекция конфигурации nginx, аннотация rewrite-target, RCE, раскрытие Secret, CWE-20, CAPEC-176, ingress-nginx CVE 2026, компрометация кластера Kubernetes
В ingress-nginx обнаружена проблема безопасности, связанная с тем, что аннотация Ingress nginx.ingress.kubernetes.io/rewrite-target может использоваться для инъекции конфигурации в nginx. Это может привести к выполнению произвольного кода в контексте контроллера ingress-nginx и раскрытию Secrets, доступных контроллеру. (Обратите внимание: при установке по умолчанию контроллер имеет доступ ко всем Secrets в кластере.)
Обнаружил: Kai Aizen
Опубликовано: 9 марта 2026 г.
Оценка CVSS: 8.8 (высокая)
CWE: CWE-20 — Некорректная проверка входных данных
CAPEC: CAPEC-176 — Манипулирование конфигурацией/окружением
Компонент: ingress-nginx
Тип атаки: Инъекция конфигурации Nginx через аннотацию Ingress
Требуемые привилегии: Низкие (PR:L)
Аннотация Ingress nginx.ingress.kubernetes.io/rewrite-target предназначена для изменения пути запроса перед его пересылкой в вышестоящие сервисы. Однако реализация допускает инъекцию произвольных директив конфигурации непосредственно в конфигурацию нижележащего nginx.
Злоумышленник, имеющий возможность создавать или изменять ресурсы Ingress, может использовать это для:
| Область воздействия | Серьёзность |
|---|---|
| Конфиденциальность | Высокая — Полное раскрытие Secrets (в масштабе кластера при конфигурации по умолчанию) |
| Целостность | Высокая — Выполнение произвольного кода в контексте контроллера |
| Доступность | Высокая — Полная компрометация контроллера ingress-nginx |
Основная проблема заключается в том, что ingress-nginx обрабатывает значение аннотации rewrite-target без достаточной проверки входных данных, что позволяет записывать управляемое злоумышленником содержимое непосредственно в конфигурацию nginx. Это уязвимость инъекции конфигурации — значение аннотации рассматривается как простой путь перезаписи, но может содержать произвольные директивы nginx.
Уязвимость доступна любому пользователю, имеющему разрешения на создание или изменение ресурсов Ingress в кластере под управлением ingress-nginx. Для атаки требуется:
Эта уязвимость относится к хорошо известному классу ошибок инъекции аннотаций в ingress-nginx:
Повторяющийся шаблон: значения аннотаций попадают в конфигурацию nginx без надлежащей очистки. Разные аннотации — одна и та же корневая причина.
| Ветка | Уязвимая версия | Исправленная версия |
|---|---|---|
| 1.13.x | < 1.13.8 | 1.13.8 |
| 1.14.x | < 1.14.4 |
# Check if ingress-nginx is installed
kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx
# Check ingress-nginx version
kubectl exec -n ingress-nginx \
$(kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.name}') \
-- /nginx-ingress-controller --version
Если в вашем кластере не установлен ingress-nginx, вы не затронуты уязвимостью.
Обновите ingress-nginx до исправленной версии для вашей ветки:
# Using Helm
helm upgrade ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--version <patched-chart-version>
Обратитесь к официальной документации по обновлению: Обновление ingress-nginx
Используйте admission control, чтобы блокировать использование аннотации rewrite-target до тех пор, пока вы не сможете выполнить обновление:
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: block-rewrite-target
webhooks:
- name: block-rewrite-target.security.local
rules:
- apiGroups: ["networking.k8s.io"]
apiVersions: ["v1"]
operations: ["CREATE", "UPDATE"]
resources: ["ingresses"]
clientConfig:
# Point to a webhook service that rejects Ingress resources
# containing the rewrite-target annotation
Подозрительные данные в поле rules.http.paths.path ресурса Ingress могут указывать на попытку эксплуатации этой уязвимости.
# Check for suspicious Ingress annotations
kubectl get ingress --all-namespaces -o json | \
jq '.items[] | select(.metadata.annotations["nginx.ingress.kubernetes.io/rewrite-target"] != null) | {namespace: .metadata.namespace, name: .metadata.name, rewrite: .metadata.annotations["nginx.ingress.kubernetes.io/rewrite-target"]}'
Если вы обнаружили признаки эксплуатации этой уязвимости, свяжитесь с [email protected].
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
| Дата | Событие |
|---|---|
| — | Уязвимость обнаружена и сообщена в комитет по реагированию на угрозы безопасности Kubernetes |
| 9 марта 2026 г. | Опубликован бюллетень безопасности |
| 9 марта 2026 г. | Выпущены исправленные версии (1.13.8, 1.14.4, 1.15.0) |
| 9 марта 2026 г. | Присвоен идентификатор CVE-2026-3288 |
Исследователь: Kai Aizen — SnailSploit
Благодарность: Tabitha Sable от имени комитета по реагированию на угрозы безопасности Kubernetes
Эта информация предоставлена исключительно в целях исследования безопасности и защиты. Любая эксплуатация данной уязвимости в злонамеренных целях незаконна и неэтична. Всегда получайте надлежащее разрешение перед тестированием систем, которые вам не принадлежат.
По вопросам или за дополнительной информацией об этой уязвимости:
Последнее обновление: 10 марта 2026 г.
Полное описание этого проекта, методология и связанные исследования доступны по адресу:
https://snailsploit.com/security-research/cves/cve-2026-3288/
Создано Kai Aizen — независимым исследователем безопасности (offensive security).
snailsploit.com · Исследования · Фреймворки · GitHub · LinkedIn · ResearchGate · X/Twitter
Та же атака. Другая среда.
| CVE | Год | Аннотация | Воздействие |
|---|
| CVE-2021-25746 | 2022 | Различные аннотации | Инъекция директив |
| CVE-2023-5044 | 2023 | permanent-redirect | Инъекция кода |
| CVE-2024-7646 | 2024 | Обход проверки аннотаций | Обход проверки |
| CVE-2026-3288 | 2026 | rewrite-target | RCE + раскрытие Secrets |
| 1.14.4 |
| 1.15.x | < 1.15.0 | 1.15.0 |
| Метрика | Значение |
|---|
| Вектор атаки | Сеть (AV:N) |
| Сложность атаки | Низкая (AC:L) |
| Требуемые привилегии | Низкие (PR:L) |
| Взаимодействие с пользователем | Отсутствует (UI:N) |
| Область действия | Не изменяется (S:U) |
| Конфиденциальность | Высокая (C:H) |
| Целостность | Высокая (I:H) |
| Доступность | Высокая (A:H) |