
# Rileva Apache ActiveMQ Classic RCE (CVE-2026-34197) tramite API Jolokia con script Python e Nmap NSE, verificando accesso non autenticato e vulnerabilità della versione.
Una vulnerabilità di esecuzione remota di codice in Apache ActiveMQ Classic che consente a un attaccante di eseguire codice arbitrario invocando l'operazione MBean addNetworkConnector(String) tramite l'API Jolokia (/api/jolokia/). L'attaccante incorpora un parametro brokerConfig dannoso che punta a un file XML Spring remoto, che ActiveMQ recupera e analizza, istanziando oggetti Java arbitrari e ottenendo l'esecuzione di codice.
Nelle versioni di ActiveMQ dalla 6.0.0 alla 6.1.1, l'endpoint Jolokia è completamente non autenticato, rendendo questa una RCE non autenticata zero-click.
Questa vulnerabilità è rimasta nascosta nel codebase per 13 anni prima della scoperta con l'assistenza dell'IA.
| Campo | Dettaglio |
|---|---|
| ID CVE | CVE-2026-34197 |
| Vendor | Apache Software Foundation |
| Prodotto | Apache ActiveMQ Classic |
| Versioni interessate | Tutte le versioni precedenti alla 5.19.4 e alla 6.2.3 |
| RCE non autenticata | Versioni dalla 6.0.0 alla 6.1.1 (Jolokia non ha autenticazione) |
| CVSS v3.1 | 8.8 (Alto) |
| CWE | CWE-94 — Controllo improprio della generazione di codice |
| Vettore di attacco | Rete |
| Autenticazione | Richiesta su 5.x; nessuna dalla 6.0.0 alla 6.1.1 |
| Interazione utente | Nessuna |
| Maturità dell'exploit | PoC pubblico disponibile |
| Corretto in | ActiveMQ Classic 5.19.4, 6.2.3 |
| Età del bug | ~13 anni nel codebase |
| Scoperta | Ricerca di vulnerabilità assistita dall'IA |
Apache ActiveMQ Classic è uno dei message broker open-source più ampiamente distribuiti nell'ecosistema Java. Implementa la specifica Java Message Service (JMS) e funge da spina dorsale della comunicazione asincrona in migliaia di ambienti enterprise in tutto il mondo.
ActiveMQ gestisce qualsiasi cosa, dalle code di elaborazione degli ordini e le pipeline di transazioni finanziarie ai flussi di telemetria IoT e ai bus di eventi dei microservizi. Se la tua organizzazione utilizza microservizi basati su Java, architettura event-driven o qualsiasi forma di messaggistica asincrona, c'è una buona probabilità che ActiveMQ sia da qualche parte nello stack.``` 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 un attaccante compromette ActiveMQ, non ottiene solo una shell su un singolo server. Si trova al **centro di ogni flusso di messaggi** dell'organizzazione, in grado di leggere, modificare, reindirizzare o iniettare messaggi tra sistemi critici.
---
## Analisi Approfondita della Vulnerabilità
### L'Architettura: Jolokia e JMX
**JMX** (Java Management Extensions) è l'interfaccia di gestione standard per le applicazioni Java. Espone gli "MBean" (Managed Beans) che consentono il monitoraggio e il controllo delle parti interne dell'applicazione. ActiveMQ espone gli MBean per la gestione di broker, code, topic, connessioni e altro.
**Jolokia** è un bridge JMX-over-HTTP. Traduce le operazioni JMX in un'API RESTful JSON, rendendo possibile gestire applicazioni Java tramite richieste HTTP senza richiedere un client JMX dedicato.
ActiveMQ Classic include Jolokia integrato, accessibile su `/api/jolokia/` nella porta della console web (predefinita: 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
È qui che iniziano i problemi. Jolokia espone tutta la potenza della gestione JMX tramite una semplice API HTTP. E una delle operazioni MBean disponibili sul broker è addNetworkConnector(String).
L'operazione addNetworkConnector(String) è progettata per creare bridge di rete tra istanze del broker ActiveMQ. Accetta una stringa URI che descrive come connettersi a un altro broker.
ActiveMQ supporta uno schema URI vm:// per connessioni broker in-process. Questi URI supportano un parametro brokerConfig che punta a un file di configurazione Spring XML. E Spring XML può istanziare oggetti Java arbitrari.