
CVE-2026-85257 के लिए रन करने योग्य Spring Boot और Quarkus रिप्रोड्यूसर, जो camel-cxf SOAP फॉल्ट सूचना प्रकटीकरण को प्रदर्शित करता है और muteException फ़िक्स को सत्यापित करता है।
Apache Camel भेद्यता के लिए चलाने योग्य प्रमाण-अवधारणा पुनरुत्पादक, जिसमें जब किसी CXF SOAP उपभोक्ता के पीछे का रूट किसी ऐसे अपवाद के साथ विफल होता था जिसे सेवा अनुबंध घोषित नहीं करता, तो उस अपवाद का विवरण SOAP क्लाइंट को fault में वापस बताया जाता था: CXF संदेश को SOAP faultstring में प्रतिलिपित करता है (और इसे fault विवरण में स्टैक ट्रेस रखने के लिए कॉन्फ़िगर किया जा सकता है)। इसलिए कोई बाहरी कॉलर जो विफलता उत्पन्न कर सकता था, डिप्लॉयमेंट के बारे में आंतरिक विवरण पढ़ सकता था — क्लास और पैकेज के नाम, और जो कुछ भी अपवाद संदेश में होता है। घोषित faults (जिन पर @WebFault एनोटेशन होता है) भिन्न बात हैं: वे प्रकाशित अनुबंध का हिस्सा होते हैं जिनके विरुद्ध क्लाइंट लिखे जाते हैं, इसलिए वे अभी भी पूर्ण रूप से रिपोर्ट किए जाते हैं।
| रनटाइम | निर्देशिका | स्टैक |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-cxf-soap 4.22.0 (प्रभावित; ठीक किया गया 4.22.1), Tomcat पर CXFServlet |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-cxf-soap (Camel 4.15.0, प्रभावित; ठीक किया गया नियंत्रण CQ 3.40.0 / Camel 4.22.1) |
दोनों मॉड्यूल प्रभावित और ठीक किए गए व्यवहार को प्रदर्शित करते हैं।
एक CXF SOAP उपभोक्ता ऐसे रूट को बैक करता है जिसका प्रोसेसर एक अघोषित IllegalStateException फेंकता है जिसमें सिम्युलेटेड आंतरिक विवरण (एक मार्कर टोकन और एक नकली आंतरिक JDBC URL) होता है। ड्राइवर SOAP क्लाइंट के रूप में कार्य करता है: यह सेवा को आमंत्रित करता है और उसे लौटाए गए SOAP fault को पढ़ता है।
Exchange processing failed — जिसमें रूट के अपवाद का कोई क्लास, संदेश या स्टैक ट्रेस नहीं होता (नया muteException उपभोक्ता विकल्प डिफ़ॉल्ट रूप से true होता है)। जिस fault को अनुबंध घोषित करता है (@WebFault) वह अभी भी पूर्ण रूप से लौटाया जाएगा।# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: fault leaks internal detail; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85257-cxf-fault-info-disclosure-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: generic fault; >>> 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): fault leaks internal detail
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: generic fault
| Property | Value |
|---|---|
| Component | camel-cxf (CxfConsumer, SOAP fault building) |
| CWE | CWE-209 (संवेदनशील जानकारी युक्त त्रुटि संदेश का निर्माण) |
| Severity | MEDIUM |
| Attack vector | एक SOAP कॉलर एक अघोषित रूट विफलता को उत्पन्न करता है और fault से अपवाद विवरण पढ़ता है |
| Impact | सूचना प्रकटीकरण: अपवाद वर्ग/संदेश (आंतरिक होस्टनाम, कनेक्शन स्ट्रिंग, रूट आकार) एक बाहरी SOAP कॉलर तक पहुँचते हैं |
| Affected Versions | 4.0.0 से 4.18.5 से पहले तक, 4.19.0 से 4.22.1 से पहले तक |
| Fixed Versions | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24477 |
| Credit | Claude Security Scan Tool |
Advisory: https://camel.apache.org/security/CVE-2026-85257.html
Spring Boot मॉड्यूल CXFServlet को एम्बेडेड Tomcat पर माउंट करता है (एक स्टैंडअलोन CXF Jetty ट्रांसपोर्ट Spring Boot द्वारा प्रबंधित Jetty संस्करण से टकराता है), इसलिए SOAP एंडपॉइंट पोर्ट 8080 पर
/services/helloपर परोसा जाता है।
CxfConsumer एक muteException कंज्यूमर विकल्प जोड़ता है (डिफ़ॉल्ट true)।
एक अघोषित रूट विफलता के लिए यह अब रूट के अपवाद के बजाय एक खाली स्टैक ट्रेस वाले स्टैंड-इन Exception("Exchange processing failed")
से fault बनाता है — इसलिए कोई भी वर्ग नाम, संदेश या स्टैक ट्रेस कॉलर तक नहीं पहुँचता। अनुबंध द्वारा घोषित अपवाद
(@WebFault) का पता लगाया जाता है और उसे पूर्ण रूप से रिपोर्ट किया जाता है, क्योंकि उसे दबाने से सेवा टूट जाएगी। पिछला आउटपुट
पुनर्स्थापित करने के लिए muteException=false सेट करें।
उन अपवादों को घोषित करें जिन्हें सेवा को रिपोर्ट करने की अनुमति है और किसी भी अन्य विफलता को onException हैंडलर में उनमें से किसी एक पर
मैप करें, ताकि कोई भी अघोषित अपवाद fault तक न पहुँचे।
यह रिपॉज़िटरी शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है: Apache Camel उपयोगकर्ताओं को भेद्यता को समझने में मदद करने, यह सत्यापित करने कि क्या वे प्रभावित हैं, और पुष्टि करने कि अपग्रेड करने से यह हल हो जाती है। विफल हो रहे रूट में मार्कर टोकन और JDBC URL निष्क्रिय, मनगढ़ंत स्थानीय फ़िक्स्चर हैं। इस सामग्री का उपयोग उन सिस्टमों के विरुद्ध न करें जिनके आप स्वामी या संचालक नहीं हैं।