
Erkennt Apache ActiveMQ Classic RCE (CVE-2026-34197) über die Jolokia-API mit Python- und Nmap-NSE-Skripten und prüft dabei unauthentifizierten Zugriff sowie Versionsschwachstellen.
Eine Remote-Code-Execution-Schwachstelle in Apache ActiveMQ Classic, die es einem Angreifer ermöglicht, beliebigen Code auszuführen, indem er die MBean-Operation addNetworkConnector(String) über die Jolokia-API (/api/jolokia/) aufruft. Der Angreifer bettet einen bösartigen brokerConfig-Parameter ein, der auf eine entfernte Spring-XML-Datei verweist, die ActiveMQ abruft und parst, wodurch beliebige Java-Objekte instanziiert und Codeausführung erreicht wird.
Bei ActiveMQ-Versionen 6.0.0 bis 6.1.1 ist der Jolokia-Endpunkt vollständig ohne Authentifizierung erreichbar, was dies zu einer Zero-Click-RCE ohne Authentifizierung macht.
Diese Schwachstelle war 13 Jahre lang im Codebase verborgen, bevor sie mit KI-Unterstützung entdeckt wurde.
| Feld | Detail |
|---|---|
| CVE-ID | CVE-2026-34197 |
| Anbieter | Apache Software Foundation |
| Produkt | Apache ActiveMQ Classic |
| Betroffene Versionen | Alle Versionen vor 5.19.4 und 6.2.3 |
| RCE ohne Authentifizierung | Versionen 6.0.0 bis 6.1.1 (Jolokia hat keine Authentifizierung) |
| CVSS v3.1 | 8.8 (Hoch) |
| CWE | CWE-94 — Unzureichende Kontrolle der Codegenerierung |
| Angriffsvektor | Netzwerk |
| Authentifizierung | Erforderlich bei 5.x; keine bei 6.0.0 bis 6.1.1 |
| Benutzerinteraktion | Keine |
| Exploit-Reifegrad | Öffentlicher PoC verfügbar |
| Behoben in | ActiveMQ Classic 5.19.4, 6.2.3 |
| Alter des Fehlers | ~13 Jahre im Codebase |
| Entdeckung | KI-gestützte Schwachstellenforschung |
Apache ActiveMQ Classic ist einer der am weitesten verbreiteten Open-Source-Message-Broker im Java-Ökosystem. Es implementiert die Java-Message-Service-Spezifikation (JMS) und dient als Rückgrat der asynchronen Kommunikation in tausenden Unternehmensumgebungen weltweit.
ActiveMQ verarbeitet alles von Auftragsverarbeitungs-Warteschlangen und Finanztransaktions-Pipelines bis hin zu IoT-Telemetrie-Streams und Microservice-Event-Bussen. Wenn Ihre Organisation Java-basierte Microservices, ereignisgesteuerte Architektur oder irgendeine Form von asynchronem Messaging verwendet, ist die Wahrscheinlichkeit hoch, dass ActiveMQ irgendwo im Stack steckt.``` 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
Wenn ein Angreifer ActiveMQ kompromittiert, erhält er nicht nur eine Shell auf einem einzelnen Server. Er sitzt im **Zentrum jedes Nachrichtenflusses** in der Organisation und kann Nachrichten zwischen kritischen Systemen lesen, ändern, umleiten oder einschleusen.
---
## Detaillierte Analyse der Schwachstelle
### Die Architektur: Jolokia und JMX
**JMX** (Java Management Extensions) ist die Standard-Verwaltungsschnittstelle für Java-Anwendungen. Sie stellt „MBeans“ (Managed Beans) bereit, die die Überwachung und Steuerung der Anwendungsinterna ermöglichen. ActiveMQ stellt MBeans für die Verwaltung von Brokern, Warteschlangen, Topics, Verbindungen und mehr bereit.
**Jolokia** ist eine JMX-über-HTTP-Brücke. Sie übersetzt JMX-Operationen in eine RESTful-JSON-API und ermöglicht so die Verwaltung von Java-Anwendungen über HTTP-Anfragen, ohne dass ein dedizierter JMX-Client erforderlich ist.
ActiveMQ Classic wird mit integriertem Jolokia ausgeliefert, das unter `/api/jolokia/` auf dem Web-Konsolen-Port (Standard: 8161) erreichbar ist.```
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
Hier beginnt das Problem. Jolokia gibt die volle Leistungsfähigkeit der JMX-Verwaltung über eine einfache HTTP-API frei. Und eine der auf dem Broker verfügbaren MBean-Operationen ist addNetworkConnector(String).
Die Operation addNetworkConnector(String) ist dafür ausgelegt, Netzwerk-Brücken zwischen ActiveMQ-Broker-Instanzen zu erstellen. Sie akzeptiert eine URI-Zeichenfolge, die beschreibt, wie eine Verbindung zu einem anderen Broker hergestellt wird.
ActiveMQ unterstützt ein vm://-URI-Schema für In-Process-Broker-Verbindungen. Diese URIs unterstützen einen brokerConfig-Parameter, der auf eine Spring-XML-Konfigurationsdatei verweist. Und Spring-XML kann beliebige Java-Objekte instanziieren.