Провайдер Kubernetes Ingress в Traefik допускает обход mTLS и изоляции пространств имён

Traefik

Traefik версий до 3.7.15 содержит две уязвимости в компоненте, который связывает обратный прокси с объектами Ingress в Kubernetes. Из-за одной из них обязательная проверка клиентского сертификата отключается сама собой, и внутренние сервисы открываются для неаутентифицированных запросов. Вторая нарушает изоляцию пространств имён и позволяет выяснить, существует ли чужой секрет с сертификатом удостоверяющего центра. Исправление вышло 16 октября 2026 года в версии 3.7.15, идентификаторов CVE у обеих проблем пока нет.

Две уязвимости в провайдере Kubernetes Ingress

Traefik - обратный прокси, который часто ставят перед приложениями в кластерах Kubernetes. Его провайдер Kubernetes Ingress NGINX читает настройки, записанные в объектах Ingress, и превращает их в правила маршрутизации и параметры TLS. Обе уязвимости затрагивают именно этот компонент. Traefik второй ветки, где такого провайдера нет, не затронут. Французская служба CERT-FR описывает последствия коротко: нарушение конфиденциальности данных и обход политики безопасности.

Отключение mTLS при конфликте настроек

Уязвимость высокой степени опасности касается взаимной аутентификации по TLS (mTLS), когда сервер проверяет сертификат не только у себя, но и у клиента. Поддержка настройки клиентской аутентификации через аннотацию Ingress появилась в Traefik 3.7.0.

Механизм ошибки прост. Провайдер привязывает параметр клиентской аутентификации к отдельному объекту Ingress, а не ко всему узлу. Если на одном узле один Ingress требует клиентский сертификат, а другой объявляет путь без такой настройки, настройки вступают в конфликт. Traefik возвращается к стандартным параметрам TLS, которые сертификат не запрашивают. Защита снимается молча, предупреждений администратор не получает.

В результате удалённый злоумышленник без учётных данных и без сертификата попадает на внутренние сервисы, доступ к которым должен был требовать проверки. Затронуты версии с 3.7.0, включая 3.7.0-ea.1, по 3.7.14. Выпуски до 3.7.0 и вся вторая ветка Traefik уязвимости не содержат. Автор отчёта об этой проблеме отметил, что готовил его с помощью искусственного интеллекта.

Совместная TLS-опция обходит проверку изоляции

Вторая уязвимость имеет низкую степень опасности и иную природу. Кластеры Kubernetes разделяют объекты по пространствам имён, и Traefik по умолчанию запрещает одному пространству использовать секреты другого. Проверка срабатывает только тогда, когда параметр клиентской аутентификации создаётся впервые.

Обход появляется при повторном использовании. Если секрет с сертификатом удостоверяющего центра уже задействован в другом Ingress, следующий объект получает ту же общую настройку без проверки. Пользователь, которому разрешено создавать Ingress в своём пространстве имён, может применить чужой сертификат удостоверяющего центра к своим маршрутам. Так он обходит настроенную изоляцию. Заодно он узнаёт, существует ли чужой секрет и используется ли он. Содержимое секрета при этом не раскрывается, поэтому ущерб ограничен.

Уязвимость появилась в 3.7.11 вместе с механизмом совместного использования параметров клиентской аутентификации. Затронуты версии с 3.7.11 по 3.7.14, более ранние выпуски такого кода не содержат.

Исправление в версии 3.7.15

Обе проблемы закрывает Traefik 3.7.15, вышедший 16 октября 2026 года. CERT-FR относит к уязвимым все версии до 3.7.15. Отдельных исправлений для ветвей 3.6 и 2.x не требуется, поскольку уязвимый код там отсутствует.

Обновление и обходные меры

Администраторам кластеров, где Traefik работает провайдером Kubernetes Ingress, нужно перейти на 3.7.15. Если обновление отложено, риск отключения mTLS снижает строгий режим TLS-опций (параметр core.strictTLSOptions): в нём конфликт настроек не приводит к подмене стандартными параметрами. Круг пользователей с правом создавать объекты Ingress тоже имеет смысл сузить, ведь именно это право открывает путь ко второй уязвимости.

Обе проблемы касаются не проксирования как такового, а логики связывания настроек TLS с объектами Ingress. Такие ошибки коварны тем, что конфигурация остаётся на месте, а защита перестаёт действовать. Заметить это можно только по косвенным признакам, потому что нужные параметры распределены между множеством объектов кластера, и ни один из них не выглядит подозрительно сам по себе.

Ссылки

Комментарии: 0