
Detecta RCE no Apache ActiveMQ Classic (CVE-2026-34197) via API Jolokia com scripts Python e Nmap NSE, verificando acesso não autenticado e vulnerabilidade de versão.
Uma vulnerabilidade de execução remota de código no Apache ActiveMQ Classic que permite a um atacante executar código arbitrário ao invocar a operação MBean addNetworkConnector(String) através da API Jolokia (/api/jolokia/). O atacante incorpora um parâmetro brokerConfig malicioso apontando para um arquivo XML Spring remoto, que o ActiveMQ busca e analisa, instanciando objetos Java arbitrários e alcançando execução de código.
Nas versões 6.0.0 a 6.1.1 do ActiveMQ, o endpoint Jolokia é completamente não autenticado, tornando esta uma RCE não autenticada de zero clique.
Esta vulnerabilidade esteve oculta no código-fonte por 13 anos antes de ser descoberta com auxílio de IA.
| Campo | Detalhe |
|---|---|
| ID CVE | CVE-2026-34197 |
| Fornecedor | Apache Software Foundation |
| Produto | Apache ActiveMQ Classic |
| Versões Afetadas | Todas as versões anteriores a 5.19.4 e 6.2.3 |
| RCE Não Autenticada | Versões 6.0.0 a 6.1.1 (Jolokia sem autenticação) |
| CVSS v3.1 | 8.8 (Alta) |
| CWE | CWE-94 — Controle Inadequado da Geração de Código |
| Vetor de Ataque | Rede |
| Autenticação | Necessária na 5.x; nenhuma na 6.0.0 a 6.1.1 |
| Interação do Usuário | Nenhuma |
| Maturidade do Exploit | PoC público disponível |
| Corrigido Em | ActiveMQ Classic 5.19.4, 6.2.3 |
| Idade do Bug | ~13 anos no código-fonte |
| Descoberta | Pesquisa de vulnerabilidade assistida por IA |
O Apache ActiveMQ Classic é um dos brokers de mensagens de código aberto mais amplamente implantados no ecossistema Java. Ele implementa a especificação Java Message Service (JMS) e serve como espinha dorsal da comunicação assíncrona em milhares de ambientes empresariais em todo o mundo.
O ActiveMQ lida com tudo, desde filas de processamento de pedidos e pipelines de transações financeiras até fluxos de telemetria IoT e barramentos de eventos de microsserviços. Se a sua organização usa microsserviços baseados em Java, arquitetura orientada a eventos ou qualquer forma de mensageria assíncrona, há uma boa chance de o ActiveMQ estar em algum lugar da pilha.``` 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
Quando um atacante compromete o ActiveMQ, ele não obtém apenas um shell em um servidor. Ele se posiciona no **centro de todos os fluxos de mensagens** da organização, capaz de ler, modificar, redirecionar ou injetar mensagens entre sistemas críticos.
---
## Análise Aprofundada da Vulnerabilidade
### A Arquitetura: Jolokia e JMX
**JMX** (Java Management Extensions) é a interface de gerenciamento padrão para aplicações Java. Ela expõe "MBeans" (Managed Beans) que permitem monitorar e controlar os internals da aplicação. O ActiveMQ expõe MBeans para gerenciar brokers, filas, tópicos, conexões e muito mais.
**Jolokia** é uma ponte JMX-sobre-HTTP. Ela traduz operações JMX em uma API JSON RESTful, tornando possível gerenciar aplicações Java por meio de requisições HTTP, em vez de exigir um cliente JMX dedicado.
O ActiveMQ Classic vem com o Jolokia integrado, acessível em `/api/jolokia/` na porta do console web (padrão: 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
É aqui que o problema começa. O Jolokia expõe todo o poder da gestão JMX através de uma API HTTP simples. E uma das operações MBean disponíveis no broker é addNetworkConnector(String).
A operação addNetworkConnector(String) foi concebida para criar pontes de rede entre instâncias do broker ActiveMQ. Ela aceita uma string URI que descreve como ligar a outro broker.
O ActiveMQ suporta um esquema de URI vm:// para ligações de broker dentro do processo. Esses URIs suportam um parâmetro brokerConfig que aponta para um ficheiro de configuração Spring XML. E o Spring XML pode instanciar objetos Java arbitrários.