
Detecta RCE en Apache ActiveMQ Classic (CVE-2026-34197) a través de la API Jolokia con scripts de Python y Nmap NSE, comprobando el acceso no autenticado y la vulnerabilidad de la versión.
Una vulnerabilidad de ejecución remota de código en Apache ActiveMQ Classic que permite a un atacante ejecutar código arbitrario invocando la operación MBean addNetworkConnector(String) a través de la API Jolokia (/api/jolokia/). El atacante incrusta un parámetro brokerConfig malicioso que apunta a un archivo XML de Spring remoto, el cual ActiveMQ descarga y analiza, instanciando objetos Java arbitrarios y logrando la ejecución de código.
En las versiones de ActiveMQ 6.0.0 hasta 6.1.1, el endpoint de Jolokia está completamente sin autenticación, lo que convierte esto en una RCE sin autenticación y sin interacción del usuario.
Esta vulnerabilidad estuvo oculta en el código base durante 13 años antes de su descubrimiento con asistencia de IA.
| Campo | Detalle |
|---|---|
| ID CVE | CVE-2026-34197 |
| Proveedor | Apache Software Foundation |
| Producto | Apache ActiveMQ Classic |
| Versiones Afectadas | Todas las versiones anteriores a 5.19.4 y 6.2.3 |
| RCE sin Autenticación | Versiones 6.0.0 hasta 6.1.1 (Jolokia no tiene autenticación) |
| CVSS v3.1 | 8.8 (Alta) |
| CWE | CWE-94 — Control Inadecuado de la Generación de Código |
| Vector de Ataque | Red |
| Autenticación | Requerida en 5.x; ninguna en 6.0.0 hasta 6.1.1 |
| Interacción del Usuario | Ninguna |
| Madurez del Exploit | PoC público disponible |
| Corregido En | ActiveMQ Classic 5.19.4, 6.2.3 |
| Antigüedad del Fallo | ~13 años en el código base |
| Descubrimiento | Investigación de vulnerabilidades asistida por IA |
Apache ActiveMQ Classic es uno de los brokers de mensajería de código abierto más ampliamente implementados en el ecosistema Java. Implementa la especificación Java Message Service (JMS) y sirve como la columna vertebral de la comunicación asíncrona en miles de entornos empresariales en todo el mundo.
ActiveMQ maneja desde colas de procesamiento de pedidos y pipelines de transacciones financieras hasta flujos de telemetría IoT y buses de eventos de microservicios. Si su organización utiliza microservicios basados en Java, arquitectura orientada a eventos o cualquier forma de mensajería asíncrona, hay una buena probabilidad de que ActiveMQ esté en algún lugar de la pila tecnológica.``` 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
Cuando un atacante compromete ActiveMQ, no solo obtiene una shell en un servidor. Se sitúa en el **centro de cada flujo de mensajes** de la organización, capaz de leer, modificar, redirigir o inyectar mensajes entre sistemas críticos.
---
## Análisis en Profundidad de la Vulnerabilidad
### La Arquitectura: Jolokia y JMX
**JMX** (Java Management Extensions) es la interfaz de gestión estándar para aplicaciones Java. Expone "MBeans" (Managed Beans) que permiten monitorear y controlar los componentes internos de la aplicación. ActiveMQ expone MBeans para gestionar brokers, colas, temas, conexiones y más.
**Jolokia** es un puente JMX sobre HTTP. Traduce las operaciones JMX a una API JSON RESTful, lo que permite gestionar aplicaciones Java mediante solicitudes HTTP en lugar de requerir un cliente JMX dedicado.
ActiveMQ Classic incluye Jolokia integrado, accesible en `/api/jolokia/` en el puerto de la consola web (por defecto: 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
Aquí es donde comienzan los problemas. Jolokia expone todo el poder de la gestión JMX a través de una simple API HTTP. Y una de las operaciones MBean disponibles en el broker es addNetworkConnector(String).
La operación addNetworkConnector(String) está diseñada para crear puentes de red entre instancias del broker ActiveMQ. Acepta una cadena URI que describe cómo conectarse a otro broker.
ActiveMQ soporta un esquema URI vm:// para conexiones de broker en proceso. Estas URIs admiten un parámetro brokerConfig que apunta a un archivo de configuración XML de Spring. Y el XML de Spring puede instanciar objetos Java arbitrarios.