
CVE-2026-84180 के लिए रन करने योग्य Spring Boot और Quarkus रिप्रोड्यूसर, जो camel-knative HTTP कंज़्यूमर अपवाद लीकेज को प्रदर्शित करते हैं और muteException फ़िक्स को सत्यापित करते हैं।
Apache Camel भेद्यता के लिए चलाने योग्य प्रूफ-ऑफ-कॉन्सेप्ट पुनरुत्पादक, जहाँ Knative HTTP कंज़्यूमर, जब कंज़्यूमर पक्ष पर एक
एक्सचेंज विफल हो गया, तो परिणामी अपवाद को HTTP प्रतिक्रिया बॉडी के रूप में दूरस्थ कॉलर को वापस लिख दिया —
जिसमें उसका क्लास नाम, संदेश और पूरा स्टैक ट्रेस शामिल था। इसलिए एक बाहरी प्रेषक विफलता को उत्तेजित कर सकता था
और डिप्लॉयमेंट के बारे में आंतरिक विवरण पढ़ सकता था: क्लास और पैकेज नाम, अपवाद संदेशों में मौजूद फ़ाइल-सिस्टम या होस्ट नाम,
रूट का स्वरूप, और — जहाँ कोई अपवाद संदेश कनेक्शन स्ट्रिंग या कॉन्फ़िगरेशन को समाहित करता है — वह डेटा सीधे। camel-knative वह शेष HTTP-परिवार कंज़्यूमर था जिसे CAMEL-23651 द्वारा अन्य HTTP कंज़्यूमर के लिए स्थापित muteException
व्यवहार के साथ संरेखित नहीं किया गया था।
| रनटाइम | निर्देशिका | स्टैक |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-knative 4.22.0 (प्रभावित; ठीक किया गया 4.22.1), Camel के Vert.x platform-http सर्वर पर कंज़्यूमर |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-knative (Camel 4.15.0, प्रभावित; ठीक किया गया नियंत्रण CQ 3.40.0 / Camel 4.22.1), Quarkus HTTP पर कंज़्यूमर |
दोनों मॉड्यूल प्रभावित और ठीक किए गए व्यवहार को प्रदर्शित करते हैं।
एक Knative HTTP स्रोत (कंज़्यूमर) रूट एक CloudEvent प्राप्त करता है और फिर उसे संसाधित करते समय विफल हो जाता है — जो किसी
भी ऐसे रूट का प्रतिनिधित्व करता है जो आंतरिक त्रुटि का सामना करता है (एक विफल डेटासोर्स लुकअप, एक डाउनस्ट्रीम टाइमआउट, एक बग)। रूट एक
IllegalStateException फेंकता है जिसका संदेश सिम्युलेटेड आंतरिक विवरण रखता है: एक नकली आंतरिक होस्टनाम
(internal-db.prod.svc.cluster.local), एक नकली JDBC URL और एक मार्कर टोकन INTERNAL-DETAIL-MARKER-7F3A2B। हमलावर
बस एक दूरस्थ कॉलर है: यह कंज़्यूमर को एक सुगठित CloudEvent POST करता है और कंज़्यूमर द्वारा वापस भेजी गई प्रतिक्रिया पढ़ता है।
at com.example... / फ्रेमवर्क स्टैक फ़्रेम।muteException (डिफ़ॉल्ट
true) का पालन करता है, इसलिए त्रुटि स्थिति लौटाई जाती है लेकिन कोई अपवाद विवरण कॉलर तक नहीं पहुँचता।# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: stack trace leaks; prints >>> PROVEN
docker compose down
# Patched control: rebuild with the fixed version, then run on the host
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-84180-knative-info-disclosure-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: empty body; prints >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected (Camel 4.15.0): stack trace leaks; >>> PROVEN
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
java -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack # fixed: empty body; >>> Not exploited
| प्रॉपर्टी | मान |
|---|---|
| घटक | camel-knative (Knative HTTP consumer, KnativeHttpConsumer.computeResponseBody) |
| CWE | CWE-209 (संवेदनशील जानकारी युक्त त्रुटि संदेश का निर्माण) |
| गंभीरता | MEDIUM |
| आक्रमण वेक्टर | एक रिमोट कॉलर उपभोक्ता पक्ष पर रूट विफलता उत्पन्न करता है और प्रतिक्रिया बॉडी से अपवाद विवरण पढ़ता है |
| प्रभाव | सूचना प्रकटीकरण: अपवाद वर्ग/संदेश/स्टैक ट्रेस (आंतरिक होस्टनाम, पैकेज नाम, रूट आकार, एम्बेडेड कनेक्शन स्ट्रिंग्स) किसी बाहरी प्रेषक तक पहुँच जाते हैं |
| प्रभावित संस्करण | 4.0.0 से 4.18.5 से पहले तक, 4.19.0 से 4.22.1 से पहले तक |
| ठीक किए गए संस्करण | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24428 |
| श्रेय | Claude Security Scan Tool |
सलाह: https://camel.apache.org/security/CVE-2026-84180.html
KnativeHttpConsumer.computeResponseBody अब एक नए
muteException विकल्प (consumer, डिफ़ॉल्ट true) की जाँच करता है। जब म्यूट किया जाता है, तो एक विफल एक्सचेंज स्टैक ट्रेस के बजाय एक खाली प्रतिक्रिया बॉडी
(new byte[0]) उत्पन्न करता है — खाली बॉडी जानबूझकर है ताकि त्रुटि स्थिति संरक्षित रहे (एक
null बॉडी कॉलर को 204 No Content भेजने पर मजबूर कर देगी)। पिछला आउटपुट बहाल करने के लिए muteException=false सेट करें।
यह camel-knative को अन्य HTTP-परिवार के उपभोक्ताओं (CAMEL-23651) के साथ संरेखित करता है।
उपभोक्ता रूट में एक onException हैंडलर जोड़ें जो प्रतिक्रिया बॉडी को स्पष्ट रूप से सेट करता है (उदाहरण के लिए एक खाली
बॉडी या एक सामान्य संदेश पर), ताकि फ्रेमवर्क कभी भी अपवाद को कॉलर को वापस न लिखे।
यह रिपॉज़िटरी शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है: Apache Camel उपयोगकर्ताओं को भेद्यता को समझने, यह सत्यापित करने में मदद करने के लिए कि क्या वे प्रभावित हैं, और पुष्टि करने के लिए कि अपग्रेड करने से यह हल हो जाता है। विफल रूट में "आंतरिक" होस्टनाम, JDBC URL और मार्कर टोकन निष्क्रिय, मनगढ़ंत स्थानीय फ़िक्स्चर हैं — इसमें कोई वास्तविक रहस्य शामिल नहीं है। इस सामग्री का उपयोग उन सिस्टमों के विरुद्ध न करें जिनके आप स्वामी या संचालक नहीं हैं।