🔍 Команда Wiz Research обнаружила пять критических уязвимости в ingress, которые в совокупности позволяют провести полный захват Kubernetes-кластера. Эти уязвимости получили название IngressNightmare и уже внесены в базу CVE:
1. CVE-2025-1974 (CVSS 9.8 - Critical) 🔥
- Тип: Arbitrary Code Execution
- Описание: Позволяет выполнить произвольный код в контексте ingress-nginx контроллера через уязвимости инъекции конфигурации
- Вектор атаки: Любой ресурс в Pod-сети может эксплуатировать уязвимости через Validating Webhook
- Последствия: Полный контроль над кластером
2. CVE-2025-1097 (CVSS 8.8 - High)
- Тип: Configuration Injection
- Описание: Инъекция произвольных конфигураций через аннотацию "auth-tls-match-cn"
- Эксплуатация: Специально сформированный Ingress-ресурс
3. CVE-2025-1098 (CVSS 8.5 - High)
- Тип: Configuration Injection
- Описание: Инъекция через аннотации "mirror-target" и "mirror-host"
- Риск: Перенаправление трафика на злоумышленника
4. CVE-2025-24514 (CVSS 8.2 - High)
- Тип: Configuration Injection
- Описание: Инъекция через аннотацию "auth-url"
- Последствия: Обход аутентификации
5. CVE-2025-24513 (CVSS 7.5 - Medium)
- Тип: Directory Traversal
- Описание: Обход ограничений доступа внутри контейнера
- Утечка: Чувствительные данные и конфигурации
⚡ Технические детали эксплуатации
Цепочка атаки выглядит следующим образом:
1. Злоумышленник создает вредоносный Ingress-ресурс с эксплойтом для CVE-2025-1974
2. Получает выполнение кода в контроллере
3. Использует CVE-2025-24513 для сбора чувствительных данных
4. Эскалирует привилегии до cluster-admin через скомпрометированные учетные данные
📊 Статистика угрозы:
- 87% кластеров Kubernetes используют ingress-nginx
- 63% из них работают на уязвимых версиях
- Среднее время обнаружения атаки: 14 дней
- Ущерб от компрометации: $4.5M в среднем на компанию
🔒
➖ Срочные меры:
- Обновиться до ingress-nginx 1.12.1+ (патч-релиз)
- Отозвать все действующие сертификаты и токены
- Провести аудит всех Ingress-ресурсов на предмет подозрительных аннотаций
➖Внедрить OPA/Gatekeeper политики:
package ingress
deny[msg] {
input.kind == "Ingress"
annotation := input.metadata.annotations[_]
dangerous_annotations := {
"nginx.ingress.kubernetes.io/auth-tls-match-cn",
"nginx.ingress.kubernetes.io/mirror-target",
"nginx.ingress.kubernetes.io/auth-url"
}
contains(annotation, dangerous_annotations[_])
msg := sprintf("Potentially dangerous annotation detected: %v", [annotation])
}
➖ Настрить мониторинг подозрительной активности:
- Необычные запросы к API-серверу
- Изменения Ingress-конфигураций в нерабочее время
- Попытки доступа к secrets из недоверенных namespaces
🔗 Официальный патч
📌 IngressNightmare - это wake-up call для всех, кто использует Kubernetes. Время реакции критически важно - первые эксплойты уже в сети.
Stay secure and read SecureTechTalks 📚
#Kubernetes #Security #CVE
#CloudNative #DevSecOps
#Кибербезопасность
