Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-40860 — CVE-2026-40860 के लिए रिप्रोड्यूसर — Apache Camel camel-jms/sjms/amqp JMS ObjectMessage असुरक्षित डिसीरियलाइज़ेशन (RCE) | Kitploit
उपकरण/GitHubGitHub/oscerd/cve-2026-40860
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षाबाइनरी शोषणलैब और अभ्यास
GitHuboscerd/cve-2026-40860

CVE-2026-40860

CVE-2026-40860 के लिए रिप्रोड्यूसर — Apache Camel camel-jms/sjms/amqp JMS ObjectMessage असुरक्षित डिसीरियलाइज़ेशन (RCE)

रिपॉजिटरी देखें
2 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

camel-jms JMS ObjectMessage असुरक्षित डिसीरियलाइज़ेशन रिप्रोड्यूसर (CVE-2026-40860)

यह प्रोजेक्ट Apache Camel के camel-jms घटक (और इसके साथ camel-sjms, camel-sjms2, camel-amqp, camel-activemq, camel-activemq6) में Java डिसीरियलाइज़ेशन कमज़ोरी को प्रदर्शित करता है, जिसे CVE-2026-40860 के रूप में ट्रैक किया गया है। JmsBinding.extractBodyFromJms() इनकमिंग JMS ObjectMessage के पेलोड को ObjectMessage.getObject() के माध्यम से , क्लास अनुमति-सूची या निषेध-सूची के डिसीरियलाइज़ करता है। चूंकि यह तब होता है जब (डिफ़ॉल्ट) होता है और Camel एक JMS है, एक हमलावर जो उपभोग की जा रही कतार/विषय पर एक क्राफ्टेड प्रकाशित कर सकता है, वह प्राप्त कर सकता है जब गैजेट चेन क्लासपाथ पर हो।

बिना किसी ObjectInputFilter
mapJmsMessage=true
उपभोक्ता
ObjectMessage
रिमोट कोड निष्पादन

एडवाइज़री: https://camel.apache.org/security/CVE-2026-40860.html

कमज़ोरी का सारांश

गुणमान
घटकcamel-jms (+ camel-sjms, camel-sjms2, camel-amqp, camel-activemq, camel-activemq6)
प्रभावित क्लासorg.apache.camel.component.jms.JmsBinding#extractBodyFromJms → jakarta.jms.ObjectMessage#getObject()
CWECWE-502: अविश्वसनीय डेटा का डिसीरियलाइज़ेशन
प्रभावरिमोट कोड निष्पादन (RCE)
ट्रिगरCamel JMS उपभोक्ता + mapJmsMessage=true (डिफ़ॉल्ट) + एक ObjectMessage जिसे हमलावर एन्क्यू कर सकता है
प्रभावित संस्करण3.0.0 से 4.14.7 से पहले, 4.15.0 से 4.18.2 से पहले, 4.19.0 से 4.20.0 से पहले
निर्धारित संस्करण4.14.7, 4.18.2, 4.20.0
JIRACAMEL-23321
रिपोर्टरवेंकटरमन कुमार (Securin)

तकनीकी विवरण

root@kitploit:~
// JmsBinding.extractBodyFromJms(Exchange, Message) - प्रभावित संस्करण
if (message instanceof ObjectMessage objectMessage) {
    Object payload = objectMessage.getObject();   // <-- बिना ObjectInputFilter के डिसीरियलाइज़ करता है
    if (payload instanceof DefaultExchangeHolder holder) {
        ...
    }
    return payload;
}

getObject() JMS प्रदाता के ObjectInputStream.readObject() को संदेश बॉडी पर चलाता है। Camel कोई क्लास फ़िल्टरिंग नहीं जोड़ता, इसलिए क्लासपाथ पर एक गैजेट चेन डिसीरियलाइज़ेशन के दौरान निष्पादित होती है।

फ़िक्स क्या करता है (और इसकी सीमाएँ)

फ़िक्स (4.14.7 / 4.18.2 / 4.20.0) एक डिफ़ॉल्ट ObjectInputFilter अनुमति-सूची (java.**;javax.**;org.apache.camel.**;!*) जोड़ता है, जिसे नए deserializationFilter एंडपॉइंट विकल्प या JVM-व्यापी -Djdk.serialFilter के माध्यम से अनुकूलित किया जा सकता है। फ़िक्स के लिए Camel के अपने कमिट संदेश पर ध्यान दें:

यह जाँच JMS प्रदाता द्वारा पेलोड को पहले ही डिसीरियलाइज़ करने के बाद चलती है। यह अप्रत्याशित क्लासों को रूट तक फैलने से रोकता है, लेकिन यह अपने आप उन गैजेट चेन को नहीं रोक सकता जिनका readObject() प्रदाता के ObjectInputStream के अंदर फ़ायर होता है। पूर्ण सुरक्षा के लिए JMS प्रदाता के अपने डिसीरियलाइज़ेशन फ़िल्टर और/या JVM-व्यापी -Djdk.serialFilter को कॉन्फ़िगर करना आवश्यक है।

इसलिए पूर्ण सुरक्षा = Camel को अपग्रेड करें + प्रदाता / JVM फ़िल्टर को प्रतिबंधित करें। यह PoC trustAllPackages=true (एक सामान्य वास्तविक-दुनिया सेटिंग) के साथ ActiveMQ क्लाइंट का उपयोग करता है ताकि प्रदाता पेलोड को डिसीरियलाइज़ करे; प्रभावित Camel संस्करण पर कोई और चीज़ बाधा नहीं डालती।

पीड़ित रूट

root@kitploit:~
from("jms:queue:evil")            // mapJmsMessage डिफ़ॉल्ट रूप से true है
    .log("Consumed: ${body.class.name}");

बस ObjectMessage प्राप्त करना डिसीरियलाइज़ेशन को ट्रिगर करता है — रूट बॉडी अप्रासंगिक है।

रिपॉजिटरी लेआउट — हमलावर बनाम पीड़ित

पीड़ित Camel JMS उपभोक्ता है। हमलावर कोई भी उत्पादक है जो कतार पर प्रकाशित कर सकता है। दोनों एक वास्तविक Apache ActiveMQ Artemis ब्रोकर से बात करते हैं जो Docker में चल रहा है।

root@kitploit:~
CVE-2026-40860/
├── pom.xml                 # camel-jms 4.18.1 + activemq-client 6.2.4 + commons-collections 3.2.1 (गैजेट)
├── Dockerfile              # ऐप चलाता है (--add-opens केवल गैजेट बनाने के लिए)
├── docker-compose.yml      # Artemis ब्रोकर (quay.io) + रिप्रोड्यूसर ऐप
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── JmsConfig.java          # OpenWire ConnectionFactory (trustAllPackages=true) + jms घटक
    │   ├── VictimRoute.java        # पीड़ित: from("jms:queue:evil")
    │   ├── Gadget.java             # CommonsCollections6 गैजेट, getObject() के दौरान फ़ायर होता है
    │   └── ExploitController.java  # हमलावर: कतार पर ObjectMessage(gadget) प्रकाशित करता है
    └── resources/
        └── application.properties

वास्तविक हमले में सीरियलाइज़्ड बाइट्स हमलावर द्वारा ऑफ़लाइन उत्पन्न की जाती हैं (उदा. ysoserial के साथ); केवल पीड़ित को अपने क्लासपाथ पर गैजेट चेन की आवश्यकता होती है। यह PoC सुविधा के लिए गैजेट को प्रक्रिया में बनाता है, यही कारण है कि JVM --add-opens java.base/java.util=ALL-UNNAMED के साथ चलता है — यह एक गैजेट-निर्माण विवरण है, कमज़ोरी से संबंधित नहीं।

पूर्वापेक्षाएँ

  • Java 17+ और Maven 3.8+
  • Docker (ब्रोकर और ऐप चलाता है)

पुनरुत्पादन चरण

चरण 1: बिल्ड करें और सब कुछ प्रारंभ करें

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build

यह एक Artemis ब्रोकर (quay.io/artemiscloud/activemq-artemis-broker) और रिप्रोड्यूसर ऐप प्रारंभ करता है, जो OpenWire के माध्यम से इससे जुड़ता है।

चरण 2: डिसीरियलाइज़ेशन ट्रिगर करें (RCE)

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> कतार 'evil' पर ObjectMessage प्रकाशित हुआ।
#    camel-jms उपभोक्ता ने ObjectMessage.getObject() को कॉल किया -> डिसीरियलाइज़ेशन।
#
#    >>> RCE प्रमाण — /tmp/pwned मौजूद है: true

चरण 3: सत्यापित करें

root@kitploit:~
docker exec cve-2026-40860 ls -la /tmp/pwned

सफाई

root@kitploit:~
docker compose down

हमले के वेक्टर

कोई भी Camel JMS उपभोक्ता (camel-jms, camel-sjms, camel-sjms2, camel-amqp, camel-activemq, camel-activemq6) जो किसी ऐसे गंतव्य से पढ़ रहा है जिस पर हमलावर प्रकाशित कर सकता है — एक साझा ब्रोकर, खुले उत्पादकों वाला विषय, अविश्वसनीय अपस्ट्रीम द्वारा फ़ीड की जाने वाली कतार — mapJmsMessage=true (डिफ़ॉल्ट) के साथ।

शोषण की शर्तें

  1. mapJmsMessage=true (डिफ़ॉल्ट) वाला एक Camel JMS उपभोक्ता।
  2. हमलावर उपभोग किए जाने वाले गंतव्य पर एक ObjectMessage एन्क्यू कर सकता है।
  3. JMS प्रदाता पेलोड को डिसीरियलाइज़ करता है (जैसे ActiveMQ trustAllPackages=true, या बिना प्रतिबंधात्मक फ़िल्टर वाला प्रदाता)।
  4. क्लासपाथ पर एक गैजेट लाइब्रेरी (यहाँ commons-collections:3.2.1)।

अनुशंसित फ़िक्स

4.14.7 / 4.18.2 / 4.20.0 पर अपग्रेड करें, और डिसीरियलाइज़ेशन को अंत से अंत तक प्रतिबंधित करें:

  • JVM-व्यापी अनुमति-सूची सेट करें: -Djdk.serialFilter=java.**;org.apache.camel.**;!* (या एंडपॉइंट के नए deserializationFilter विकल्प का उपयोग करें)।
  • JMS प्रदाता के अपने डिसीरियलाइज़ेशन फ़िल्टर को कॉन्फ़िगर करें (जैसे ActiveMQ trustedPackages, trustAllPackages=true का उपयोग न करें)।

शमन

अपग्रेड करने तक:

  1. गैर-ObjectMessage पेलोड को प्राथमिकता दें; जहाँ कच्चा संदेश स्वीकार्य हो वहाँ mapJmsMessage=false सेट करें।
  2. JMS प्रदाता के विश्वसनीय पैकेजों को लॉक डाउन करें; अविश्वसनीय गंतव्यों पर कभी trustAllPackages=true न करें।
  3. -Djdk.serialFilter लागू करें।
  4. गैजेट लाइब्रेरीज़ को क्लासपाथ से हटाएँ (commons-collections 3.x और इसी तरह की लाइब्रेरीज़ को अपग्रेड/हटाएँ)।

अस्वीकरण

यह रिप्रोड्यूसर केवल सुरक्षा अनुसंधान और अधिकृत परीक्षण के लिए प्रदान किया गया है, एक सार्वजनिक रूप से खुलासा और ठीक की गई कमज़ोरी के लिए। इसका उपयोग सिस्टम के विरुद्ध स्पष्ट अनुमति के बिना न करें।

टूल डाउनलोड करें