Популярный обратный прокси-сервер с открытым исходным кодом Traefik столкнулся с серьёзной проблемой. Пятого июня 2026 года разработчики проекта выпустили сразу три уведомления о высокоопасных уязвимостях. Все они объединены одной темой: нарушитель может обойти политики безопасности и получить доступ к защищённым ресурсам без предъявления клиентского сертификата или учётных данных. Под угрозой оказались пользователи версий v2.11.x до v2.11.48, v3.6.x до v3.6.19 и v3.7.x до v3.7.3.
Детали уязвимостей
Первая уязвимость получила идентификатор CVE-2026-48491. Она связана с механизмом защиты от подстановки доменного имени - SNICheck (проверка индикатора имени сервера). Дело в том, что Traefik позволяет администраторам задавать параметры TLS (протокола защиты транспортного уровня) для разных маршрутов. Если на маршруте используется правило с подстановочным знаком - например, Host(*.example.com) - и для него включена строгая политика с обязательной проверкой клиентского сертификата (mTLS, взаимная проверка подлинности), то при обработке запроса Traefik выполняет поиск подходящих параметров TLS. И вот тут возникает проблема: поиск ведётся только по точному совпадению поля Server Name Indication (SNI) с записями в карте. Подстановочные знаки не учитываются. Если на той же точке входа (entrypoint) обслуживается другой домен с более мягкими настройками, злоумышленник может завершить TLS-рукопожатие под этими мягкими настройками, а затем отправить HTTP-запрос с заголовком Host, указывающим на защищённый подстановочный маршрут. Так он доберётся до внутреннего бэкенда, не предъявив клиентского сертификата. Уязвимость затрагивает обычный HTTPS и HTTP/2, HTTP/3 не требуется.
Вторая проблема также связана с проверкой сертификатов, но уже в протоколе HTTP/3 (работающем поверх QUIC). Она не имеет официального CVE, но оценена как критическая. При включённом HTTP/3 на точке входа Traefik выбирает конфигурацию TLS для квик-рукопожатия на основе точного совпадения и учёта регистра в значении SNI. Если на маршруте настроено правило с подстановочным знаком (например, *.example.com) или используется сравнение без учёта регистра, то механизм выбора не может сопоставить шаблон. В результате рукопожатие выполняется по умолчанию - а в конфигурации по умолчанию клиентский сертификат может не требоваться. Маршрутизация на уровне HTTP при этом всё равно направляет запрос на защищённый бэкенд, где политика mTLS строгая. Злоумышленник, имеющий доступ к UDP-порту точки входа, может завершить QUIC-соединение без сертификата, а затем отправить запрос к бэкенду в обход обязательной аутентификации.
Третья уязвимость (CVE-2026-48020) касается промежуточного программного обеспечения StripPrefix (удаление префикса пути). Она позволяет обойти аутентификацию и авторизацию на уровне маршрута. Предположим, есть общедоступный маршрут с правилом PathPrefix (совпадение по префиксу пути) и применённым промежуточным звеном StripPrefix. Если в запросе указать путь, содержащий последовательность ".." (переход на уровень выше) или её процентно-закодированный вариант "%2e%2e", то на этапе маршрутизации этот путь совпадает с общедоступным правилом. После удаления префикса и нормализации пути Traefik перенаправляет запрос на другой маршрут, где уже требуется аутентификация. Однако проверка подлинности к этому моменту не была выполнена, поскольку изначально запрос попал под общедоступный шаблон. Атакующий может получить доступ к административным панелям, внутренним конфигурационным эндпоинтам и другим защищённым ресурсам, просто подобрав подходящий путь.
Последствия всех трёх уязвимостей серьёзны. Злоумышленник может обойти строгую политику взаимной проверки сертификатов и добраться до чувствительных внутренних сервисов, которые должны быть изолированы. Для эксплуатации не требуется предварительная авторизация или взаимодействие с пользователем. Атака возможна по сети при низком уровне сложности.
Разработчики уже выпустили исправленные версии: v2.11.48, v3.6.19 и v3.7.3. Пользователям рекомендовано как можно скорее обновить свои установки. Особое внимание стоит обратить администраторам, использующим подстановочные правила в конфигурации маршрутизации и включённым HTTP/3. Также стоит пересмотреть схемы применения промежуточного звена StripPrefix: если на общедоступном маршруте используется такое звено, а за ним спрятан защищённый бэкенд, то до обновления этот бэкенд фактически был открыт для неаутентифицированного доступа.
В целом инцидент напоминает, что даже зрелые проекты с большой базой пользователей могут содержать логические ошибки, возникающие на стыке разных механизмов - проверки TLS, подстановочных имён и обработки путей. Traefik остаётся одним из самых популярных решений для балансировки нагрузки и управления входящим трафиком, поэтому безопасность его конфигурации требует пристального внимания.
Ссылки
- https://github.com/traefik/traefik/security/advisories/GHSA-xf64-8mw2-4gr2
- https://github.com/traefik/traefik/security/advisories/GHSA-9cr8-q42q-g8m7
- https://github.com/traefik/traefik/security/advisories/GHSA-5r4w-85f3-pw66