
Apache Camel camel-platform-http-vertx में CORS क्रेडेंशियल्ड किसी-भी-ओरिजिन दोष CVE-2026-84176 को पुनरुत्पादित करने वाला, सत्यापन चरणों सहित एक रन करने योग्य Spring Boot प्रूफ-ऑफ-कॉन्सेप्ट।
Apache Camel की उस भेद्यता के लिए चलाने योग्य प्रूफ-ऑफ-कॉन्सेप्ट रिप्रोड्यूसर, जिसमें VertxPlatformHttpServerSupport. createCorsHandler() ने Access-Control-Allow-Credentials: true को ओरिजिन जाँच के बाहर सेट किया था — इसलिए यह
Origin हेडर ले जाने वाले अनुरोध के प्रत्येक प्रतिक्रिया के साथ भेजा जाता था, उन ओरिजिनों की प्रतिक्रियाओं में भी जिन्हें हैंडलर ने अभी-अभी
अनुमति न देने का निर्णय लिया था। जब camel.server.cors.origins सेट नहीं होता है, तो हैंडलर प्रत्येक ओरिजिन को अनुमत मानता है और कॉलर के स्वयं के Origin को
Access-Control-Allow-Origin के रूप में वापस प्रतिबिंबित करता है। ये दोनों मिलकर वह क्रेडेंशियलयुक्त किसी-भी-ओरिजिन
कॉन्फ़िगरेशन बनाते हैं जिसे fetch विनिर्देश एक शाब्दिक वाइल्डकार्ड के रूप में व्यक्त करने से इनकार करता है — ठीक इसी कारण
ओरिजिन को प्रतिबिंबित करना उस नियम को दरकिनार करने का सामान्य तरीका है। इसलिए किसी भी ओरिजिन पर मौजूद कोई पेज
Camel एंडपॉइंट पर क्रेडेंशियलयुक्त क्रॉस-ओरिजिन अनुरोध कर सकता है और प्रतिक्रियाएँ पढ़ सकता है।
| रनटाइम | निर्देशिका | स्टैक |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-platform-http-vertx 4.22.0 (प्रभावित; 4.22.1 में ठीक किया गया) |
Camel Quarkus: लागू नहीं। भेद्य हैंडलर Camel के अपने स्टैंडअलोन Vert.x platform-http सर्वर (
camel-platform-http-vertx) में है। Camel Quarkus पर,platform-httpको Quarkus HTTP सर्वर द्वारा परोसा जाता है और CORS को Quarkus (quarkus.http.cors.*) द्वारा संभाला जाता है, न किcreateCorsHandler()द्वारा, इसलिए यह विशिष्ट दोष वहाँ पहुँच योग्य नहीं है। (यहाँcamel-platform-http-vertx-starterभी नहीं है; Spring Boot मॉड्यूल सादेcamel-platform-http-vertxआर्टिफ़ैक्ट का उपयोग करता है, जो Spring Boot वेब सर्वर से स्वतंत्र रूप से अपना स्वयं का Vert.x सर्वर चलाता है।)
ऐप Camel के Vert.x platform-http सर्वर को पोर्ट 8081 पर CORS सक्षम और कोई कॉन्फ़िगर किया गया ओरिजिन नहीं के साथ शुरू करता है, और
एक रूट platform-http:/api के साथ। हमलावर Origin: https://evil.example (एक ऐसा ओरिजिन जो कभी
अनुमति-सूची में नहीं था) के साथ GET /api भेजता है और प्रतिक्रिया का निरीक्षण करता है:
Access-Control-Allow-Origin: https://evil.example (प्रतिबिंबित) और
Access-Control-Allow-Credentials: true।Access-Control-Allow-Credentials प्रदान नहीं किया जाता है।cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
प्रभावित बिल्ड पर अपेक्षित आउटपुट:
Response CORS headers:
Access-Control-Allow-Origin = https://evil.example
Access-Control-Allow-Credentials = true
>>> PROVEN: the endpoint echoes the attacker's Origin ... and sends Access-Control-Allow-Credentials: true ...
| गुण | मान |
|---|---|
| घटक | camel-platform-http-vertx |
| CWE | CWE-942 (अविश्वसनीय डोमेन के साथ अनुमेय क्रॉस-डोमेन नीति) |
| गंभीरता | मध्यम |
| आक्रमण वेक्टर | CORS सक्षम और कोई कॉन्फ़िगर किए गए origins न होने पर platform-http-vertx एंडपॉइंट पर Origin हेडर ले जाने वाला एक क्रॉस-ओरिजिन (क्रेडेंशियलयुक्त) अनुरोध |
| प्रभाव | कोई भी origin क्रेडेंशियलयुक्त क्रॉस-ओरिजिन अनुरोध कर सकता है और प्रतिक्रियाएँ पढ़ सकता है |
| प्रभावित संस्करण | 4.0.0 से 4.18.5 से पहले, 4.19.0 से 4.22.1 से पहले |
| ठीक किए गए संस्करण | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24436 |
| श्रेय | Claude Security Scan Tool |
सलाहकार: https://camel.apache.org/security/CVE-2026-84176.html
Access-Control-Allow-Credentials: true अब हर origin के लिए बिना शर्त उत्सर्जित नहीं किया जाता है; किसी ऐसे origin को क्रेडेंशियल नहीं दिए जाते जो स्पष्ट रूप से अनुमत नहीं है, इसलिए प्रतिबिंबित-origin-प्लस-क्रेडेंशियल ("क्रेडेंशियलयुक्त
any-origin") संयोजन अब उत्पन्न नहीं होता है।
एक स्पष्ट camel.server.cors.origins अनुमति-सूची सेट करें, और मनमाने origins से क्रेडेंशियलयुक्त क्रॉस-ओरिजिन पहुँच पर निर्भर न रहें; एंडपॉइंट को एक प्रॉक्सी के पीछे रखें जो सही CORS नीति लागू करता हो।
यह रिपॉजिटरी शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है: Apache Camel उपयोगकर्ताओं को भेद्यता समझने, यह सत्यापित करने कि क्या वे प्रभावित हैं, और यह पुष्टि करने में सहायता करने के लिए कि अपग्रेड करने से यह हल हो जाता है। इस सामग्री का उपयोग उन प्रणालियों के विरुद्ध न करें जिनके आप स्वामी या संचालक नहीं हैं।