В Apache Struts появилась уязвимость CVE-2026-104711, она же BDU:2026-16564. Ошибка содержится в компоненте RestfulActionMapper, который разбирает адреса входящих запросов. Через него удалённый злоумышленник добивается выполнения своего кода на сервере приложения. Ни учётная запись, ни действия пользователя не нужны. Под удар попадают ветки платформы от 2.0.0 до 7.3.0, а вместе с ними пакеты Struts в Red Hat Enterprise Linux 9. Рабочий эксплойт уже опубликован.
CVE-2026-104711 в Apache Struts и Red Hat Enterprise Linux 9
Причина - отсутствие нейтрализации специальных элементов в операторе языка выражений, классификация CWE-917. Язык выражений служит для подстановки значений в строки и вычисления простых конструкций прямо внутри них. Разработчики не экранируют служебные символы в таких конструкциях. В результате строка, пришедшая снаружи, воспринимается как исполняемая инструкция, а не как данные.
Механика атаки проста. Злоумышленник отправляет на адрес приложения специально составленный запрос. Обработчик RestfulActionMapper передаёт содержимое в вычислитель языка выражений. Тот выполняет вставленную конструкцию с правами сервиса, под которым работает сервер приложений. Дальше открывается доступ к файлам, переменным окружения и внутренним сервисам, доступным с этой машины.
Оценка по CVSS 3.1 составляет 9,8 из 10. Вектор сетевой, сложность эксплуатации низкая, привилегии не требуются, участие пользователя не нужно. По методологии CVSS 2.0 базовая оценка равна 10. Банк данных угроз безопасности информации относит уязвимость к критическому уровню опасности. Дата выявления - 2 октября 2026 года.
Эксплойт в открытом доступе
Публичный репозиторий с готовым кодом появился через несколько дней после раскрытия, 5 октября. Сведений о применении в реальных атаках источник не приводит. Зато сам факт публикации меняет расклад. Раньше для проверки уязвимости требовалось разобраться в механике языка выражений. Теперь достаточно взять чужой эксплойт и адаптировать его под конкретный адрес.
Ситуацию осложняет распространённость Struts. Платформа работает в государственных информационных системах, банковских порталах, промышленных и логистических приложениях на Java. Многие такие системы собирались годами и обновляются редко. Похожий случай произошёл в 2017 году с S2-045, тогда уязвимость использовали для массовых атак на корпоративные порталы. Нынешняя ошибка затрагивает ещё и ветки 6.x и 7.x, то есть и относительно свежие сборки.
Отдельного внимания заслуживает Red Hat Enterprise Linux 9. Пакет Struts приходит туда через репозитории дистрибутива, и обновление зависит от того, как настроен цикл обслуживания. Если приложение собирали из исходников, дистрибутивный пакет ничего не исправит. Версию нужно проверять в самой сборке, включая зависимости, подтянутые автоматически.
Обновление и проверка версий
Исправление подготовлено, уязвимость устранена. Документ S2-075 у Apache описывает проблему и содержит ссылки на новые сборки. Red Hat ведёт отдельную запись CVE-2026-104711 в своём бюллетене безопасности. Обновляться нужно до версий новее 2.3.37, 2.5.33, 6.11.0 и 7.3.0 в соответствующих ветках. Точные номера сборок указаны в рекомендациях производителя, и брать их стоит оттуда.
Порядок действий для администраторов выглядит так. Сначала инвентаризация: найти все приложения и сервисы, которые тянут Struts, включая промежуточное ПО и внутренние библиотеки. Затем обновление зависимостей и пересборка. После пересборки полезна проверка, что в артефакте не осталось старой версии библиотеки. Отдельных обходных мер, кроме обновления, рекомендации не содержат, поэтому до установки исправлений доступ к уязвимым приложениям из интернета лучше ограничить.
На периметре помогает фильтрация запросов, но полагаться только на неё не стоит. Сигнатуры обходят, а сама ошибка живёт внутри обработчика. Журналы веб-сервера и сервера приложений стоит просмотреть на предмет необычных обращений к компоненту RestfulActionMapper и конструкций с выражениями в параметрах. Такие записи могут указывать на попытки эксплуатации.
Struts остаётся привлекательной целью из-за большой установленной базы и медленного обновления в унаследованных системах. Публикация эксплойта сокращает разрыв между раскрытием уязвимости и первыми атаками до нескольких дней. Критический рейтинг здесь подкреплён конкретикой: сетевой доступ, отсутствие аутентификации и готовый инструмент в открытом доступе.
Ссылки
- https://bdu.fstec.ru/vul/2026-16564
- https://www.cve.org/CVERecord?id=CVE-2026-104711
- https://github.com/uday952/CVE-2026-104711-Advanced-Variant
- https://www.openwall.com/lists/oss-security/2026/10/05/10
- https://cwiki.apache.org/confluence/spaces/WW/pages/446070946/S2-075
- https://www.herodevs.com/vulnerability-directory/cve-2026-104711?nes-for-apache-struts
- https://access.redhat.com/security/cve/cve-2026-104711
- https://github.com/uday952/CVE-2026-104711