
CVE-2026-85316 के लिए रन करने योग्य प्रूफ-ऑफ-कॉन्सेप्ट रिप्रोड्यूसर, जो Apache Camel camel-platform-http पाथ प्रीफ़िक्स मिलान में अनपेक्षित प्रॉक्सी मोड को प्रदर्शित करता है, साथ में फ़िक्स्ड-वर्ज़न कंट्रोल्स भी।
Apache Camel की उस भेद्यता के लिए चलाने योग्य प्रूफ़-ऑफ़-कॉन्सेप्ट पुनरुत्पादक, जिसमें camel-platform-http यह तय करता था कि कोई
एंडपॉइंट प्रॉक्सी मोड में चल रहा है या नहीं, इसके द्वारा जाँचा जाता था कि उसका कॉन्फ़िगर किया गया पथ स्ट्रिंग proxy से
शुरू होता है या नहीं, बजाय इसके कि वह उससे ठीक-ठीक मेल खाता है या नहीं। प्रॉक्सी मोड किसी एंडपॉइंट को एक कैच-ऑल (getPath() बन जाता है /) में बदल देता है जिसका फ़ॉरवर्ड लक्ष्य
अनुरोध के स्वयं के Host हेडर से लिया जाता है। इसलिए कोई भी एंडपॉइंट जिसका पथ केवल उन अक्षरों से शुरू होता है —
proxyStats, proxy-health, proxying, … — चुपचाप एक फ़ॉरवर्डिंग प्रॉक्सी बन जाता था जिसे रूट लेखक ने कभी नहीं माँगा था: एक
अनुरोध-जालसाज़ी प्रिमिटिव और फ़ॉरवर्डिंग पथ जो कुछ भी पहुँच सकता है उसका एक्सपोज़र (CWE-1220)।
| रनटाइम | निर्देशिका | स्टैक |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-platform-http 4.22.0 (प्रभावित; ठीक किया गया 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.39.0 + camel-quarkus-platform-http (Camel 4.22.0, प्रभावित; ठीक किया गया नियंत्रण CQ 3.40.0 / Camel 4.22.1) |
दोनों मॉड्यूल वास्तविक PlatformHttpEndpoint के विरुद्ध प्रभावित और ठीक किए गए व्यवहार को प्रदर्शित करते हैं।
ड्राइवर ठीक किए गए संस्करण के अपने ही रिग्रेशन टेस्ट (PlatformHttpEndpointProxyPathTest) को दर्शाता है। यह एक
platform-http:proxyStats एंडपॉइंट बनाता है — एक स्टैट्स एंडपॉइंट जिसका नाम संयोगवश proxy से शुरू होता है — और
कंपोनेंट से पूछता है कि क्या यह एक प्रॉक्सी है:
isHttpProxy() true लौटाता है और getPath() कैच-ऑल / में सिमट जाता है — एंडपॉइंट को
एक फ़ॉरवर्डिंग प्रॉक्सी में बदल दिया गया है।isHttpProxy() false लौटाता है और getPath() proxyStats है — केवल ठीक-ठीक पथ proxy ही
प्रॉक्सी मोड चुनता है।प्रलेखित platform-http:proxy एंडपॉइंट दोनों संस्करणों में एक प्रॉक्सी बना रहता है (तुलना के लिए दिखाया गया है), जो पुष्टि करता है
कि ठीक किया गया संस्करण केवल अनपेक्षित वर्गीकरण को हटाता है।
# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: proxyStats isHttpProxy=true, path "/"; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85316-platform-http-proxy-prefix-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: isHttpProxy=false, path "proxyStats"; >>> 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.22.0): proxyStats isHttpProxy=true, path "/"
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: isHttpProxy=false, path "proxyStats"
| Property | Value |
|---|---|
| घटक | camel-platform-http (PlatformHttpEndpoint.isHttpProxy) |
| CWE | CWE-1220 (अपर्याप्त एक्सेस नियंत्रण ग्रैन्युलैरिटी) |
| गंभीरता | मध्यम |
| आक्रमण वेक्टर | एक रूट एक platform-http एंडपॉइंट घोषित करता है जिसका पथ proxy से शुरू होता है (लेकिन इसका उद्देश्य प्रॉक्सी करना नहीं है); यह कॉलर के Host हेडर की ओर अग्रेषित करने वाला कैच-ऑल बन जाता है |
| प्रभाव | अनपेक्षित प्रॉक्सी/अनुरोध-जालसाजी और फ़ॉरवर्डिंग पथ जिस तक पहुँच सकता है उसका एक्सपोज़र |
| प्रभावित संस्करण | 4.0.0 से 4.18.5 से पहले तक, 4.19.0 से 4.22.1 से पहले तक |
| ठीक किए गए संस्करण | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24455 |
| श्रेय | Claude Security Scan Tool |
सलाह: https://camel.apache.org/security/CVE-2026-85316.html
प्रभावित Quarkus मॉड्यूल CQ 3.39.0 (Camel 4.22.0) पर आधारित है। पैच किया गया नियंत्रण CQ 3.40.0 (Camel 4.22.1) है। प्रदर्शन केवल एक एंडपॉइंट बनाता और निरीक्षण करता है (
isHttpProxy()/getPath()), इसलिए कोई HTTP सर्वर शुरू नहीं किया जाता; Spring Boot मॉड्यूल स्टार्टर के बजाय सादेcamel-platform-httpघटक का उपयोग करता है।
PlatformHttpEndpoint.isHttpProxy() अब startsWith का उपयोग करने के बजाय
पथ की proxy के साथ समानता की तुलना करता है (PROXY_PATH.equals(this.path)), इसलिए केवल प्रलेखित platform-http:proxy
एंडपॉइंट ही प्रॉक्सी मोड में चलता है।
किसी भी एंडपॉइंट पथ का नाम बदलें जो proxy से शुरू होता है लेकिन जिसका उद्देश्य प्रॉक्सी होना नहीं है।
यह रिपॉज़िटरी शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है: Apache Camel उपयोगकर्ताओं को भेद्यता को समझने में मदद करने, यह सत्यापित करने कि क्या वे प्रभावित हैं, और पुष्टि करने के लिए कि अपग्रेड करने से यह हल हो जाता है। प्रदर्शन केवल इन-प्रोसेस एंडपॉइंट वर्गीकरण का निरीक्षण करता है और कोई ट्रैफ़िक अग्रेषित नहीं करता। इस सामग्री का उपयोग उन सिस्टमों के विरुद्ध न करें जिनके आप स्वामी या संचालक नहीं हैं।