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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-40859 — CVE-2026-40859 के लिए रिप्रोड्यूसर — Apache Camel camel-netty-http / camel-vertx-http उत्पादक-पक्ष HTTP प्रतिक्रिया निकायों का असुरक्षित डिसीरियलाइज़ेशन (RCE) | Kitploit
उपकरण/GitHubGitHub/oscerd/cve-2026-40859
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेपर और शोधलर्निंग और शिक्षापेलोड डेवलपमेंटबाइनरी शोषण
GitHuboscerd/cve-2026-40859

CVE-2026-40859

CVE-2026-40859 के लिए रिप्रोड्यूसर — Apache Camel camel-netty-http / camel-vertx-http उत्पादक-पक्ष HTTP प्रतिक्रिया निकायों का असुरक्षित डिसीरियलाइज़ेशन (RCE)

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

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

सभी देखें →

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

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

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

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

camel-netty-http / camel-vertx-http HTTP-प्रतिक्रिया असुरक्षित डिसीरियलाइज़ेशन पुनरुत्पादक (CVE-2026-40859)

यह प्रोजेक्ट Apache Camel के camel-netty-http और camel-vertx-http घटकों में जावा डिसीरियलाइज़ेशन भेद्यता को प्रदर्शित करता है, जिसे CVE-2026-40859 के रूप में ट्रैक किया गया है। जब एक प्रोड्यूसर एंडपॉइंट को transferException=true (या घटक-स्तरीय allowJavaSerializedObject=true) के साथ कॉन्फ़िगर किया जाता है, तो एक बैकएंड HTTP प्रतिक्रिया जिसमें विफलता स्थिति और Content-Type: application/x-java-serialized-object है, उसका बॉडी एक कच्चे java.io.ObjectInputStream द्वारा और बिना ObjectInputFilter के डिसीरियलाइज़ किया जाता है। एक हमलावर जो Camel प्रोड्यूसर के बैकएंड को नियंत्रित करता है — एक समझौता की गई सेवा, या सादे HTTP कनेक्शन पर मैन-इन-द-मिडल — एक क्राफ्टेड सीरियलाइज़्ड ऑब्जेक्ट लौटा सकता है और यदि क्लासपाथ पर गैजेट चेन है, तो Camel होस्ट पर प्राप्त कर सकता है।

रिमोट कोड निष्पादन

परामर्श: https://camel.apache.org/security/CVE-2026-40859.html

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

गुणमान
घटकcamel-netty-http, camel-vertx-http (प्रोड्यूसर पक्ष)
प्रभावित वर्गorg.apache.camel.component.netty.http.NettyHttpHelper#deserializeJavaObjectFromStream (और VertxHttpHelper#deserializeJavaObjectFromStream)
CWECWE-502: अविश्वसनीय डेटा का डिसीरियलाइज़ेशन
प्रभावरिमोट कोड निष्पादन (RCE)
पूर्व शर्तtransferException=true (या allowJavaSerializedObject=true) + throwExceptionOnFailure=true (डिफ़ॉल्ट) + हमलावर-नियंत्रित बैकएंड
प्रभावित संस्करण4.0.0 से 4.14.8 से पहले, 4.15.0 से 4.18.3 से पहले, 4.19.0 से 4.20.0 से पहले
स्थिर संस्करण4.14.8, 4.18.3, 4.20.0
JIRACAMEL-23324
रिपोर्टरVenkatraman Kumar (Securin)

डिफ़ॉल्ट कॉन्फ़िगरेशन में शोषण योग्य नहीं — transferException डिफ़ॉल्ट रूप से false है। PoC इसे सक्षम करता है, जैसा कि एक एप्लिकेशन जो रिमोट-एक्सेप्शन प्रसार चाहता है, करेगा।

तकनीकी विवरण

गैर-2xx प्रतिक्रिया पर, netty-http प्रोड्यूसर (throwExceptionOnFailure=true, डिफ़ॉल्ट) populateNettyHttpOperationFailedException के माध्यम से प्रतिक्रिया से एक अपवाद बनाता है। यदि transferException चालू है और प्रतिक्रिया में सीरियलाइज़्ड-ऑब्जेक्ट सामग्री प्रकार है, तो यह बॉडी को डिसीरियलाइज़ करता है:

root@kitploit:~
// NettyHttpHelper.populateNettyHttpOperationFailedException(...) - affected version
if (transferException) {
    String contentType = response.headers().get(NettyHttpConstants.CONTENT_TYPE);
    if (NettyHttpConstants.CONTENT_TYPE_JAVA_SERIALIZED_OBJECT.equals(contentType)) {   // application/x-java-serialized-object
        InputStream is = exchange.getContext().getTypeConverter().convertTo(InputStream.class, response);
        if (is != null) {
            Object body = deserializeJavaObjectFromStream(is);   // <-- sink
            if (body instanceof Exception) {
                return (Exception) body;
            }
        }
    }
}

// NettyHttpHelper.deserializeJavaObjectFromStream(InputStream) - affected version
ObjectInputStream ois = new ObjectInputStream(is);   // NO ObjectInputFilter
answer = ois.readObject();                            // gadget fires here

गैजेट readObject() के अंदर, instanceof Exception जांच से पहले निष्पादित होता है — इसलिए पेलोड को अपवाद होने की भी आवश्यकता नहीं है। camel-vertx-http में VertxHttpHelper.deserializeJavaObjectFromStream में समान सिंक है।

पीड़ित रूट

root@kitploit:~
from("direct:call")
    .to("netty-http://backend-host:PORT/path?transferException=true");
    // throwExceptionOnFailure defaults to true

कोई भी प्रोड्यूसर कॉल जिसका बैकएंड 5xx + application/x-java-serialized-object प्रतिक्रिया देता है, सिंक को ट्रिगर करता है।

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

पीड़ित Camel प्रोड्यूसर है (यह डिसीरियलाइज़ेशन करता है)। हमलावर उस बैकएंड को नियंत्रित करता है जिसे वह कॉल करता है। इस स्व-निहित PoC में दोनों भूमिकाएँ एक ही JVM/कंटेनर में चलती हैं: एक एम्बेडेड रॉ-सॉकेट HTTP सर्वर (MaliciousBackend) हमलावर-नियंत्रित बैकएंड की भूमिका निभाता है, और Camel रूट (VictimRoute) पीड़ित है।

root@kitploit:~
CVE-2026-40859/
├── pom.xml                 # camel-netty-http 4.18.2 + commons-collections 3.2.1 (gadget)
├── Dockerfile              # runs the app (with --add-opens, needed only to build the gadget)
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── VictimRoute.java        # victim: netty-http producer, transferException=true
    │   ├── MaliciousBackend.java   # attacker backend: 500 + serialized-object body on :9999
    │   ├── Gadget.java             # CommonsCollections6 gadget, fires during readObject()
    │   └── ExploitController.java  # /exploit/attack drives the producer call
    └── 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

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

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> producer threw ...NettyHttpOperationFailedException  (expected)
#
#    >>> RCE proof — /tmp/pwned exists: true

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

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

सफाई

root@kitploit:~
docker compose down

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

कोई भी camel-netty-http / camel-vertx-http प्रोड्यूसर जो transferException=true (या allowJavaSerializedObject=true) के साथ कॉन्फ़िगर किया गया है और ऐसे बैकएंड से बात करता है जिसे हमलावर नियंत्रित या इंटरसेप्ट कर सकता है:

  • एक मैन-इन-द-मिडल एन्क्रिप्टेड नहीं (http://) प्रोड्यूसर कनेक्शन पर प्रतिक्रिया को प्रतिस्थापित करता है।
  • एक समझौता या दुर्भावनापूर्ण बैकएंड सेवा सीधे क्राफ्टेड प्रतिक्रिया लौटाती है।

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

  1. प्रोड्यूसर transferException=true (या घटक allowJavaSerializedObject=true) के साथ।
  2. throwExceptionOnFailure=true (डिफ़ॉल्ट)।
  3. एक हमलावर-नियंत्रित/इंटरसेप्ट करने योग्य बैकएंड जो 5xx + application/x-java-serialized-object लौटाता है।
  4. क्लासपाथ पर एक गैजेट लाइब्रेरी (यहाँ commons-collections:3.2.1)।

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

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

शमन

  1. अविश्वसनीय या नेटवर्क-पहुंच योग्य बैकएंड से बात करने वाले प्रोड्यूसर पर transferException=true / allowJavaSerializedObject=true सक्षम न करें।
  2. प्रोड्यूसर कनेक्शन के लिए TLS (https) का उपयोग करें ताकि ट्रांज़िट में प्रतिक्रियाएँ प्रतिस्थापित न की जा सकें।
  3. जहाँ विकल्प आवश्यक है, एक स्पष्ट अनुमति-सूची सेट करें: -Djdk.serialFilter=java.**;org.apache.camel.**;!*।
  4. गैजेट लाइब्रेरीज़ को क्लासपाथ से हटाएँ (commons-collections 3.x और इसी तरह की लाइब्रेरीज़ को अपग्रेड/हटाएँ)।

अस्वीकरण

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

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