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

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

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

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

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

श्रेणियाँ

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

CVE-2026-43866

CVE-2026-43866 के लिए पुनरुत्पादक — Apache Camel camel-jms जाली DefaultExchangeHolder CVE-2026-40860 डिसीरियलाइज़ेशन फ़िल्टर को बायपास करता है (एक्सचेंज-स्टेट इंजेक्शन)

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

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

सभी देखें →

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

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

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

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

camel-jms नकली DefaultExchangeHolder फ़िल्टर-बाईपास पुनरुत्पादक (CVE-2026-43866)

यह प्रोजेक्ट CVE-2026-43866, Apache Camel के camel-jms (और camel-sjms / JMS-परिवार) घटकों में CVE-2026-40860 सुधार का एक बाईपास प्रदर्शित करता है। CVE-2026-40860 ने आने वाले JMS ObjectMessage पेलोड के लिए एक पोस्ट-डिसीरियलाइज़ेशन क्लास अनुमति-सूची (java.**;javax.**;org.apache.camel.**;!*) जोड़ा। लेकिन org.apache.camel.support.DefaultExchangeHolder अनुमति-सूचीबद्ध org.apache.camel.** नेमस्पेस में रहता है, इसलिए एक ObjectMessage जिसका शीर्ष-स्तरीय ऑब्जेक्ट एक DefaultExchangeHolder है, जाँच पास कर देता है। प्राप्त करने वाला पक्ष फिर की आवश्यकता उस पर कॉल करता है — होल्डर के प्रत्येक गैर-नल फील्ड को रूटेड एक्सचेंज (बॉडी, IN/OUT हेडर, एक्सचेंज प्रॉपर्टीज, वेरिएबल्स, एक्सचेंज आईडी, अपवाद) में लिखता है। इस प्रकार, एक हमलावर जो प्रकाशित कर सकता है, — रूटिंग, हेडर, प्रॉपर्टीज और त्रुटि प्रबंधन में हेरफेर करने के लिए।

transferExchange
बिना
DefaultExchangeHolder.unmarshal()
ObjectMessage
केवल सार्वभौमिक रूप से विश्वसनीय java.* प्रकारों का उपयोग करके मनमाना एक्सचेंज स्थिति इंजेक्ट कर सकता है — किसी डिसीरियलाइज़ेशन गैजेट श्रृंखला की आवश्यकता नहीं

Advisory: https://camel.apache.org/security/CVE-2026-43866.html

भेद्यता सारांश

प्रॉपर्टीमान
घटकcamel-jms (+ camel-sjms, camel-sjms2, camel-amqp, camel-activemq, camel-activemq6)
प्रभावित वर्गorg.apache.camel.component.jms.JmsBinding#extractBodyFromJms → DefaultExchangeHolder.unmarshal
CWECWE-502 (अविश्वसनीय डेटा का डिसीरियलाइज़ेशन) + CWE-20 (अनुचित इनपुट सत्यापन)
प्रभावएक्सचेंज-स्थिति इंजेक्शन: हमलावर-नियंत्रित बॉडी, हेडर, प्रॉपर्टीज, वेरिएबल्स, अपवाद
प्रकृतिCVE-2026-40860 क्लास-फ़िल्टर सुधार का बाईपास (इसमें कोई दोष नहीं)
प्रभावित संस्करणFrom 3.0.0 before 4.14.8, from 4.15.0 before 4.18.3, from 4.19.0 before 4.21.0
स्थिर संस्करण4.14.8, 4.18.3, 4.21.0
JIRACAMEL-23373 (jms), CAMEL-23409 (sjms)
रिपोर्टरgaorenyusi

तकनीकी विवरण

root@kitploit:~
// JmsBinding.extractBodyFromJms(...) - affected 4.18.2
if (message instanceof ObjectMessage objectMessage) {
    Object payload = objectMessage.getObject();
    checkDeserializedClass(payload);                        // CVE-2026-40860 allow-list: java.**;javax.**;org.apache.camel.**;!*
    if (payload instanceof DefaultExchangeHolder holder) {  // <-- DefaultExchangeHolder is org.apache.camel.** -> passes
        DefaultExchangeHolder.unmarshal(exchange, holder);  // <-- writes forged state into the Exchange; NO transferExchange gate
        Map<String, Object> jmsHeaders = extractHeadersFromJms(message, exchange);
        exchange.getIn().getHeaders().putAll(jmsHeaders);
        return exchange.getIn().getBody();
    } else {
        return payload;
    }
}

असममिति: भेजने वाला पक्ष ObjectMessage/transferExchange निर्माण को गेट करता है, लेकिन प्राप्त करने वाला पक्ष किसी भी डिसीरियलाइज़ किए गए DefaultExchangeHolder को अनमार्शल करता है। सुधार (4.14.8 / 4.18.3 / 4.21.0) एक नया objectMessageEnabled विकल्प जोड़ता है (security = "insecure:serialization", डिफ़ॉल्ट false) — एक आने वाला ObjectMessage स्पष्ट रूप से सक्षम होने तक बिल्कुल भी डिसीरियलाइज़ नहीं किया जाता है, इसलिए एक नकली होल्डर कभी unmarshal() तक नहीं पहुँच सकता। (यह उन रूट्स के लिए एक ब्रेकिंग चेंज है जो ObjectMessage / transferExchange पर निर्भर हैं।)

JMS-प्रदाता अनुमति-सूची मदद नहीं करती। यह PoC ActiveMQ क्लाइंट को एक यथार्थवादी, लॉक-डाउन trustedPackages = [java, javax, org.apache.camel] के साथ कॉन्फ़िगर करता है — org.apache.camel प्रविष्टि बिल्कुल वही है जिसे एक असली transferExchange का उपयोग करने वाली डिप्लॉयमेंट को विश्वास करना चाहिए। नकली होल्डर अभी भी पास हो जाता है, क्योंकि यह स्वयं एक DefaultExchangeHolder है जिसके सभी फील्ड विश्वसनीय java.* प्रकार हैं, जो एक असली से अप्रभेद्य है।

पीड़ित रूट

root@kitploit:~
from("jms:queue:cve")                 // mapJmsMessage defaults to true; transferExchange NOT set
    .process(exchange -> { /* observes the injected body / headers / properties */ });

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

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

root@kitploit:~
CVE-2026-43866/
├── pom.xml                 # camel-jms 4.18.2 + activemq-client 6.2.4  (NO gadget library)
├── Dockerfile              # runs the app (no --add-opens; no gadget)
├── docker-compose.yml      # Artemis broker (quay.io) + the reproducer app
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── JmsConfig.java            # OpenWire ConnectionFactory (trustedPackages incl. org.apache.camel) + jms component
    │   ├── VictimRoute.java          # victim: from("jms:queue:cve"); records what the route observed
    │   ├── CapturedState.java
    │   ├── ForgedHolderFactory.java  # builds a DefaultExchangeHolder via the public marshal() API
    │   └── ExploitController.java    # attacker: publishes the forged holder as an ObjectMessage
    └── resources/
        └── application.properties

आवश्यक शर्तें

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

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

चरण 1: सब कुछ बनाएँ और शुरू करें

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

चरण 2: बाईपास ट्रिगर करें

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> एक नकली DefaultExchangeHolder को JMS ObjectMessage के रूप में कतार 'cve' पर प्रकाशित किया गया।
#    ...
#      बॉडी      = INJECTED-BODY-...      (इंजेक्ट किया गया: true)
#      हेडर    = pwned-header-...       (इंजेक्ट किया गया: true)
#      प्रॉपर्टी  = pwned-property-...     (इंजेक्ट किया गया: true)
#
#    >>> एक्सचेंज-स्थिति इंजेक्शन प्रमाण — हमलावर-नियंत्रित बॉडी+हेडर+प्रॉपर्टी: true

रूट एक बॉडी, हेडर और प्रॉपर्टी के साथ चला जो उसने कभी सेट नहीं किए — सभी हमलावर के नकली होल्डर द्वारा प्रदान किए गए।

सफाई

root@kitploit:~
docker compose down

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

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

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

  1. एक Camel JMS उपभोक्ता जिसमें mapJmsMessage=true (डिफ़ॉल्ट) है, एक प्रभावित संस्करण पर।
  2. हमलावर एक ObjectMessage को कतारबद्ध कर सकता है जिसका पेलोड एक DefaultExchangeHolder है।
  3. JMS प्रदाता पेलोड को डिसीरियलाइज़ करता है — जो कि transferExchange का उपयोग करने वाली किसी भी डिप्लॉयमेंट के लिए, इसका मतलब है कि प्रदाता पहले से org.apache.camel पर भरोसा करता है। किसी गैजेट लाइब्रेरी की आवश्यकता नहीं है।

अनुशंसित सुधार

4.14.8 / 4.18.3 / 4.21.0 (CAMEL-23373 / CAMEL-23409) में अपग्रेड करें। JMS ObjectMessage हैंडलिंग नए objectMessageEnabled विकल्प के माध्यम से डिफ़ॉल्ट रूप से अक्षम है; इसे केवल उन गंतव्यों के लिए सक्षम करें जो विशेष रूप से विश्वसनीय उत्पादकों द्वारा फीड किए जाते हैं।

शमन

  1. JMS ब्रोकर प्राधिकरण के माध्यम से Camel-उपभोग कतारों/विषयों पर प्रकाशन पहुँच को विश्वसनीय उत्पादकों तक सीमित करें।
  2. JMS उपभोक्ताओं को उजागर न करें जो ObjectMessage बॉडी को अविश्वसनीय नेटवर्क पर मैप करते हैं।
  3. नोट: JMS-प्रदाता डिसीरियलाइज़ेशन अनुमति-सूची इस विशिष्ट बाईपास को कम नहीं करती (पेलोड केवल सार्वभौमिक रूप से विश्वसनीय क्लासेस और DefaultExchangeHolder का उपयोग करता है)।

अस्वीकरण

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

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