
Обнаруживает RCE в Apache ActiveMQ Classic (CVE-2026-34197) через Jolokia API с помощью скриптов на Python и Nmap NSE, проверяя неаутентифицированный доступ и уязвимость версии.
Уязвимость удалённого выполнения кода в Apache ActiveMQ Classic, которая позволяет атакующему выполнить произвольный код, вызвав операцию MBean addNetworkConnector(String) через Jolokia API (/api/jolokia/). Атакующий внедряет вредоносный параметр brokerConfig, указывающий на удалённый Spring XML-файл, который ActiveMQ загружает и разбирает, создавая произвольные Java-объекты и добиваясь выполнения кода.
На версиях ActiveMQ с 6.0.0 по 6.1.1 конечная точка Jolokia полностью не требует аутентификации, что делает эту уязвимость RCE без аутентификации и без взаимодействия с пользователем.
Эта уязвимость скрывалась в кодовой базе 13 лет, прежде чем была обнаружена с помощью ИИ.
| Поле | Детали |
|---|---|
| CVE ID | CVE-2026-34197 |
| Поставщик | Apache Software Foundation |
| Продукт | Apache ActiveMQ Classic |
| Затронутые версии | Все версии до 5.19.4 и 6.2.3 |
| RCE без аутентификации | Версии с 6.0.0 по 6.1.1 (Jolokia не имеет аутентификации) |
| CVSS v3.1 | 8.8 (Высокий) |
| CWE | CWE-94 — Некорректный контроль генерации кода |
| Вектор атаки | Сеть |
| Аутентификация | Требуется на 5.x; отсутствует на 6.0.0–6.1.1 |
| Взаимодействие с пользователем | Отсутствует |
| Зрелость эксплойта | Доступен публичный PoC |
| Исправлено в | ActiveMQ Classic 5.19.4, 6.2.3 |
| Возраст ошибки | ~13 лет в кодовой базе |
| Обнаружение | Исследование уязвимостей с помощью ИИ |
Apache ActiveMQ Classic — один из наиболее широко развёрнутых брокеров сообщений с открытым исходным кодом в экосистеме Java. Он реализует спецификацию Java Message Service (JMS) и служит основой асинхронной коммуникации в тысячах корпоративных сред по всему миру.
ActiveMQ обрабатывает всё: от очередей обработки заказов и конвейеров финансовых транзакций до потоков телеметрии IoT и шин событий микросервисов. Если ваша организация использует Java-микросервисы, событийно-ориентированную архитектуру или любую форму асинхронного обмена сообщениями, велика вероятность, что ActiveMQ присутствует где-то в стеке.``` ActiveMQ Broker ┌───────────────────────┐ │ │ ┌──────────┐ │ ┌───────────────┐ │ ┌──────────┐ │ Producer │───────▶│ │ Message │ │───────▶│ Consumer │ │ (App A) │ send │ │ Queue / │ │ recv │ (App B) │ └──────────┘ │ │ Topic │ │ └──────────┘ │ └───────────────┘ │ ┌──────────┐ │ │ ┌──────────┐ │ Producer │───────▶│ ┌───────────────┐ │───────▶│ Consumer │ │ (App C) │ │ │ Jolokia │ │ │ (App D) │ └──────────┘ │ │ API (:8161) │ │ └──────────┘ │ └───────┬───────┘ │ └───────────┼───────────┘ │ ⚠️ CVE-2026-34197 Attack surface here
Когда злоумышленник компрометирует ActiveMQ, он получает не просто шелл на одном сервере. Он оказывается в **центре всех потоков сообщений** в организации, имея возможность читать, изменять, перенаправлять или внедрять сообщения между критически важными системами.
---
## Глубокий анализ уязвимости
### Архитектура: Jolokia и JMX
**JMX** (Java Management Extensions) — это стандартный интерфейс управления для Java-приложений. Он предоставляет «MBeans» (Managed Beans), которые позволяют осуществлять мониторинг и управление внутренними компонентами приложения. ActiveMQ предоставляет MBeans для управления брокерами, очередями, темами, соединениями и многим другим.
**Jolokia** — это мост JMX через HTTP. Он преобразует операции JMX в RESTful JSON API, позволяя управлять Java-приложениями с помощью HTTP-запросов, не требуя выделенного JMX-клиента.
ActiveMQ Classic поставляется со встроенным Jolokia, доступным по адресу `/api/jolokia/` на порту веб-консоли (по умолчанию: 8161).```
Traditional JMX Access:
┌──────────┐ ┌──────────────┐
│ JConsole │ ────── JMX Protocol ─────────> │ ActiveMQ │
│ │ (requires JMX client) │ MBeans │
└──────────┘ └──────────────┘
Jolokia HTTP Access:
┌──────────┐ ┌──────────────┐
│ curl / │ ── POST /api/jolokia/ ───────> │ ActiveMQ │
│ browser │ (just needs HTTP) │ MBeans │
└──────────┘ └──────────────┘
⬆️
Anyone with HTTP access can
invoke MBean operations
Вот где начинаются проблемы. Jolokia открывает всю мощь управления JMX через простой HTTP API. И одна из операций MBean, доступных на брокере, — это addNetworkConnector(String).
Операция addNetworkConnector(String) предназначена для создания сетевых мостов между экземплярами брокера ActiveMQ. Она принимает строку URI, описывающую, как подключиться к другому брокеру.
ActiveMQ поддерживает схему URI vm:// для внутрипроцессных подключений к брокеру. Эти URI поддерживают параметр brokerConfig, который указывает на файл конфигурации Spring XML. А Spring XML может создавать произвольные Java-объекты.