
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 ऑब्जेक्ट्स को इंस्टैंशिएट कर सकता है।