
Минимальный тестовый инструмент для обнаружения уязвимостей внедрения аннотаций в контроллерах Kubernetes NGINX Ingress. Этот скрипт отправляет специально сформированный запрос AdmissionReview для имитации потенциального пути эксплуатации из CVE-2025-1974 и проверяет признаки неверно интерпретированных аннотаций в журналах контроллера.
Этот скрипт проверяет уязвимости внедрения аннотаций в кластерах Kubernetes с помощью контроллера NGINX Ingress. Он предназначен только для целей обнаружения в связи с CVE-2025-1974, которая позволяет вредоносным аннотациям влиять на конфигурацию NGINX.
Уязвимость, раскрытая Wiz.io (пост в блоге), заключается во внедрении аннотаций, которые некорректно обрабатываются контроллером. Например:
nginx.ingress.kubernetes.io/auth-url: "http://placeholder/#; error_log /root/this_path_shouldnt_exist.log debug; #"
Это может привести к неожиданному поведению конфигурации NGINX и ошибкам разрешений при обработке. В более продвинутых сценариях такой тип внедрения может быть объединен с другими ошибками конфигурации для достижения удаленного выполнения кода (RCE).
AdmissionReview из YAML-файла./validate контроллера допуска.admission_review.yaml: Содержит подготовленный запрос AdmissionReview.main.py: Отправляет полезную нагрузку контроллеру.Сначала перенаправьте порт контроллера допуска:
kubectl port-forward -n ingress-nginx svc/ingress-nginx-controller-admission 8443:443
Затем выполните:
python main.py --url https://localhost:8443
Проверьте журналы контроллера ingress:
kubectl logs -n ingress-nginx -l app.kubernetes.io/component=controller
Вы можете увидеть:
nginx: [emerg] open() "/root/this_path_shouldnt_exist.log" failed (13: Permission denied)
Это указывает на то, что аннотация была некорректно выполнена как директива.
Только для образовательного и авторизованного тестирования. Не запускайте на системах без разрешения.
Используйте этот инструмент, чтобы проверить, уязвим ли ваш кластер к внедрению аннотаций через NGINX Ingress. Эксплуатация этой уязвимости может быть частью более широкой цепочки атак, ведущей к удаленному выполнению кода.