Яндекс.Метрика
Услуги Портфолио Контакты БлогНовости +7 (800) 511‑32‑27 Обсудить проект
Безопасность

Apache Tomcat CVE-2026-65182: критическая уязвимость обхода ограничений доступа

1 сентября 2026·6 мин чтения
Apache TomcatCVE-2026-65182
Apache Tomcat CVE-2026-65182: критическая уязвимость обхода ограничений доступа

Коротко о главном

25 августа 2026 года команда безопасности Apache раскрыла CVE-2026-65182 с оценкой CVSS 9.1 (Critical): ошибка в порядке обработки security constraints в Apache Tomcat позволяет неаутентифицированному злоумышленнику получить сетевой доступ к защищённым ресурсам без каких-либо учётных данных. Уязвимость затрагивает все версии Tomcat от 7.0.0 до 11.0.24. Исправления уже выпущены — команды, обслуживающие Java-приложения на базе DevOps-инфраструктуры, должны обновиться в ближайшие часы.

Суть проблемы: если в конфигурации веб-приложения более широкое правило (например, ограничение на длинный путь) объявлено раньше более строгого ограничения на более короткий подпуть, Tomcat применяет первое совпадение и игнорирует строгое правило. Результат — маршруты, которые должны быть закрыты, остаются открытыми. Атака не требует аутентификации, выполняется по сети без взаимодействия с пользователем. Apache присвоила уязвимости категорию «Improper Access Control» (CWE-284).

Ошибка была сообщена в Apache Security Team 13 июля 2026 года и публично раскрыта 25 августа 2026 года вместе с исправленными версиями. Если ваше приложение проходит аудит кода или используется Tomcat как контейнер сервлетов — читайте дальше, чтобы понять, нужно ли экстренное обновление.

Техническая суть: почему constraints обходятся

В стандарте Java Servlet security constraints определяются в web.xml (или через аннотации и программную регистрацию). Разработчики вправе задавать несколько правил: например, разрешить доступ к /api/* для роли user, а к /api/admin/* — только для роли admin.

CVE-2026-65182 возникает из-за ошибки в алгоритме поиска совпадения. Если constraint для более длинного пути (/api/* c правами для user) объявлен в web.xml раньше, чем constraint для более специфичного подпути (/api/admin/* только для admin), Tomcat принимает первое правило и останавливается, не доходя до второго. Атакующий, не прошедший аутентификацию, делает запрос к /api/admin/settings — Tomcat применяет правило /api/* и пропускает его, если это правило допускает неаутентифицированный доступ или роль, которой у него нет.

Это не теоретический вектор: аналогичная логика применяется во многих популярных Java-фреймворках (Spring Security, Jakarta EE), но там корректная сортировка происходит на уровне фреймворка. В Tomcat же при определённых конфигурациях порядок объявления в web.xml решает всё — и именно здесь скрывалась уязвимость.

Затронутые версии Tomcat

Уязвимость присутствует во всех активных и уже завершивших поддержку ветках Apache Tomcat:

Tomcat 11: версии 11.0.0-M1 — 11.0.24. Исправлено в 11.0.25.

Tomcat 10.1: версии 10.1.0-M1 — 10.1.57. Исправлено в 10.1.58.

Tomcat 9: версии 9.0.0-M1 — 9.0.120. Исправлено в 9.0.121.

Tomcat 8.5: версии 8.5.0 — 8.5.100. Ветка 8.5 находится в режиме End of Life с марта 2024 года — официального исправления для неё нет. Команды, которые всё ещё работают на 8.5, находятся под двойным риском: уязвимость CVE-2026-65182 плюс отсутствие будущих патчей безопасности. Миграция на 9.x или 10.x — единственный надёжный путь.

Tomcat 7: версии 7.0.0 — 7.0.109. Ветка завершила поддержку в 2021 году. Apache зафиксировала наличие уязвимости, исправлений не будет. Если вы всё ещё на Tomcat 7 — это критически высокий технический долг.

Насколько это серьёзно на практике

Оценка CVSS 9.1 складывается из максимального балла за вектор атаки (сеть), сложность атаки (низкая), отсутствие привилегий и взаимодействия с пользователем. При этом область воздействия затрагивает конфиденциальность и целостность данных. Для того чтобы уязвимость была эксплуатируемой, необходимо одно условие: более широкий security constraint должен быть объявлен в web.xml до более строгого constraint для подпути. Это распространённый паттерн в реальных Java-приложениях — особенно в старых кодовых базах, где конфигурация менялась инкрементально и порядок блоков никто специально не контролировал.

Критически важно: уязвимость не требует наличия публичного эксплойта в дикой природе, чтобы быть опасной. Порядок объявления constraints — не секрет, это стандартная XML-конфигурация. Любой, кто может прочитать web.xml или провести фаззинг маршрутов, способен найти и использовать уязвимое правило.

Агентство кибербезопасности Сингапура (CSA) выпустило отдельный alert и рекомендовало немедленное обновление. Это признак того, что уязвимость воспринимается как высокоприоритетная на уровне национальных регуляторов безопасности.

Как проверить, уязвимо ли ваше приложение

Первый шаг — определить текущую версию Tomcat. Посмотрите в переменную окружения CATALINA_HOME или файл RELEASE-NOTES в корне установки. Версия также видна в заголовке Server HTTP-ответа (если не отключена), в логах запуска Tomcat и в файле catalina.sh.

Если версия попадает в затронутый диапазон — следующий шаг: проверьте web.xml вашего приложения (или конфигурацию, передаваемую программно). Ищите сочетание: более широкий URL-паттерн (например, /api/*) объявлен раньше более специфичного подпути (/api/admin/*) с более строгим ограничением доступа. Если такой порядок есть — вы уязвимы.

Даже если очевидного паттерна нет, мы рекомендуем обновляться: гарантировать отсутствие уязвимой конфигурации без полного аудита всех модулей и зависимостей невозможно — особенно если приложение использует сторонние WAR-артефакты или фреймворки со своими security filters.

Как устранить уязвимость

Рекомендуемый путь — обновление Tomcat:

Для Tomcat 11: обновитесь до версии 11.0.25 или новее.

Для Tomcat 10.1: обновитесь до версии 10.1.58 или новее.

Для Tomcat 9: обновитесь до версии 9.0.121 или новее.

Для Tomcat 8.5 и 7: официальных исправлений нет. Единственный рекомендованный путь — миграция на поддерживаемую ветку.

Временный workaround — пересортировать constraints: убедитесь, что более специфичные (более длинные пути) объявлены в web.xml раньше более широких. Это устраняет конкретный вектор, но не является гарантией — Apache не считает это полноценной заменой патча.

При обновлении в production-среде стандартный порядок таков: тестируйте на staging, проверяйте логи запуска Tomcat на наличие предупреждений, убедитесь, что все контексты корректно загрузились, и только потом выкатывайте в прод. В типичной CI/CD-цепочке на DevOps-контуре обновление Tomcat с прохождением smoke-тестов занимает 30–60 минут.

Что это значит для команд разработки

Apache Tomcat — один из самых широко используемых Java-контейнеров: по оценкам, он задействован в десятках процентов корпоративных Java-приложений по всему миру. Уязвимость CVE-2026-65182 особенно актуальна для команд, которые:

работают на монолитной Java-архитектуре с длинным сроком жизни кодовой базы и накопленным конфигурационным долгом в web.xml;

используют Tomcat в составе корпоративных решений — ряд коммерческих платформ (ERP, CRM, порталы) поставляют встроенный Tomcat, версия которого обновляется только с релизом вендора;

разрабатывают микросервисы или API-шлюзы, где security constraints определены на уровне Tomcat, а не внешнего reverse proxy.

Более широкий сигнал: этот CVE — хороший повод провести ревизию web.xml и всей конфигурации security constraints. Ошибки в порядке объявления правил — системная проблема, которую не обнаружит обычный функциональный тест. Unit-тесты тоже её не поймают — нужны специализированные security-тесты на обход авторизации.

Часто задаваемые вопросы

Есть ли эксплойты в открытом доступе? На момент раскрытия (25 августа 2026) Apache не сообщала об активной эксплуатации в дикой природе. Однако уязвимость несложная в воспроизведении — порядок constraints проверяется минимальным фаззингом. Не рассчитывайте на долгое окно до появления публичных PoC.

Меня защитит WAF или reverse proxy перед Tomcat? Частично. Хорошо настроенный WAF или Nginx/Apache httpd с access rules может заблокировать обращения к admin-маршрутам. Но это не снимает необходимость обновления: правила WAF неполны, bypass'ы существуют, а патч устраняет проблему в корне.

Затронуты ли Spring Boot-приложения со встроенным Tomcat? Да, если встроенная версия Tomcat попадает в уязвимый диапазон. Spring Boot 3.x использует Tomcat 10.1.x, Spring Boot 2.7.x — Tomcat 9.0.x. Проверьте версию через mvn dependency:tree | grep tomcat или аналог для Gradle. Spring Boot 3.5+ уже включает исправленный Tomcat 10.1.58.

Нужно ли менять что-то в коде приложения? Только патч Tomcat без изменения кода — достаточно, если вы обновляетесь до исправленной версии. Workaround с пересортировкой constraints требует изменения web.xml.

Источники

Apache Tomcat Security Report — CVE-2026-65182 (официальный advisory): tomcat.apache.org/security-9.html и tomcat.apache.org/security-11.html.

Cyber Security Agency of Singapore (CSA) — Critical Vulnerability in Apache Tomcat, Alert al-2026-112, 25 августа 2026: csa.gov.sg/alerts-and-advisories/alerts/al-2026-112/.

SUSE Security CVE Tracker — CVE-2026-65182: suse.com/security/cve/CVE-2026-65182.

Ваш Tomcat обновлён? Проверим вместе

Команда YuSMP настроит автоматическое обновление Tomcat и других компонентов инфраструктуры, выстроит CI/CD-пайплайн с security-тестами и поможет закрыть технический долг по уязвимым версиям ПО.

DevOps и инфраструктура
Материал подготовлен редакцией YuSMP Group по открытым источникам. Нужна экспертиза по теме или разработка под задачу — обсудим проект.