Все поддерживаемые ветки Apache Tomcat содержат уязвимости, которые дают удалённому злоумышленнику обойти ограничения доступа, вызвать отказ в обслуживании и подменить данные. Разработчики закрыли их в версиях 9.0.122, 10.1.60 и 11.0.26. Tomcat - сервер приложений для языка Java, на нём работают банковские панели, интернет-магазины, внутренние корпоративные системы и государственные порталы. Одна ошибка в разборе запросов задевает сразу сотни организаций. Движок часто встраивают в состав других продуктов, поэтому администраторы не всегда знают, какая именно его версия работает внутри их сервисов.
Детали уязвимостей
Самая заметная проблема связана с разбором путей запросов к WebSocket. Сервер принимал часть пути за шаблон конечной точки и пропускал обращение дальше, не проверяя ограничения безопасности. Злоумышленник обходил правила доступа и добирался до функций, закрытых для его учётной записи. Уязвимость CVE-2026-76183 присутствует во всех трёх ветках, начиная с ранних предрелизных сборок. WebSocket - механизм постоянного соединения между браузером и сервером, его применяют в чатах, системах уведомлений и торговых терминалах.
Другая группа уязвимостей приводит к отказу в обслуживании. Простейший сценарий использует протокол AJP, который связывает Tomcat с внешним веб-сервером. Когда пользователь отправлял запрос без тела, поток обработки AJP оставался занятым и не освобождался. Несколько таких запросов - и сервер перестаёт отвечать остальным клиентам. Похожая картина возникает при отправке сообщения о закрытии WebSocket: сервер уходит в активное ожидание и впустую расходует процессорное время. Ещё один отказ в обслуживании вызывает потеря таймаутов асинхронной записи в WebSocket, а самый простой - некорректный запрос по HTTP/2, который мешает обработать обращение другого пользователя. Восстановить работу такого сервера получается только перезапуском, а для интернет-магазина или платёжного шлюза это означает простой и потерянные заказы.
Отдельная история - исправление прошлой уязвимости. В августе разработчики закрыли проблему CVE-2026-41293, но внесённая правка породила регрессию. Теперь HTTP/2-запросы разбираются непоследовательно, и заголовки одного обращения могут попасть в другое. Уязвимость CVE-2026-86350 затрагивает сборки 9.0.118-9.0.121, 10.1.55-10.1.59 и 11.0.22-11.0.25, то есть самые свежие, которые чаще всего и стоят на рабочих серверах. Правка в коде разбора протокола обернулась новой проблемой, и это касается уже не только доступности, но и достоверности данных: заголовки определяют, от чьего имени выполняется запрос.
Есть и менее очевидные уязвимости. При сжатии отдельных сообщений WebSocket сервер неверно обрабатывает параметр длины, поэтому одно сообщение удаётся спрятать внутри другого. Устаревший компонент сжатия заголовков HTTP/2 при определённом состоянии гонки добавляет лишние поля в запрос другого пользователя. Обработка заголовка о способе передачи данных для запросов HTTP/1.0 за обратным прокси позволяет сорвать чужое обращение. Настройка Jakarta Authentication при нескольких веб-приложениях приводит к тому, что сервер применяет область аутентификации первого приложения ко всем остальным и проверяет права не того пользователя.
Проверка сертификатов тоже дала сбой. Реализации TLS на основе OpenSSL игнорируют списки отозванных сертификатов, если сам сертификат хранится в хранилище ключей. В итоге клиент с отозванным сертификатом проходит проверку. Другая уязвимость касается отзыва иначе: проверка статуса через протокол OCSP (механизм онлайн-проверки действительности сертификата) иногда завершается успешно, хотя администратор отключил мягкий режим. Обе проблемы затрагивают взаимную аутентификацию по сертификатам, принятую во внутренних защищённых контурах и в системах обмена документами.
Сообщения об этих уязвимостях поступали в команду безопасности Tomcat с 11 августа по 7 сентября 2026 года, публичными они стали 23 сентября 2026 года. Упоминаний об эксплуатации в реальных атаках в бюллетенях нет. Однако описания уже открыты, поэтому рабочие эксплойты (вредоносный код, использующий уязвимость) появятся, скорее всего, быстро. Tomcat часто стоит за обратным прокси и не смотрит в интернет напрямую, так что часть атак требует доступа во внутреннюю сеть. Риск это снижает, но не убирает: отказ в обслуживании способен устроить и внутренний нарушитель с минимальными правами.
Обновление до 9.0.122, 10.1.60 или 11.0.26 закрывает весь список разом. Если установку откладывают, помогает ограничение доступа к серверу и наблюдение за всплесками запросов по HTTP/2 и обращений через AJP. Полезно проверить, какие ветки вообще используются в хозяйстве. Разработка девятой линейки завершается, поэтому разумнее сразу планировать переход на актуальную версию, а не латать старую.
Повода медлить нет. Одиннадцать уязвимостей из двенадцати закрываются обычной заменой сборки, остальные затрагивают редко встречающиеся конфигурации. Регрессия в свежем исправлении напоминает о другом: обновляться нужно быстро, но проверять работу ключевых сервисов после установки тоже обязательно.
Ссылки
- https://tomcat.apache.org/security-10.html#Fixed_in_Apache_Tomcat_10.1.60
- https://tomcat.apache.org/security-11.html#Fixed_in_Apache_Tomcat_11.0.26
- https://tomcat.apache.org/security-9.html#Fixed_in_Apache_Tomcat_9.0.122