
CVE-2026-80343 के लिए रन करने योग्य प्रूफ-ऑफ-कॉन्सेप्ट, जो camel-netty-http सुरक्षा-बाधा केस-संवेदनशीलता बायपास है, जिसमें Spring Boot और Quarkus रीप्रोड्यूसर और फ़िक्स सत्यापन शामिल हैं।
Apache Camel की उस भेद्यता के लिए चलाने योग्य प्रूफ-ऑफ-कॉन्सेप्ट रिप्रोड्यूसर, जिसमें camel-netty-http security
constraint अनुरोध पथ की तुलना कॉन्फ़िगर किए गए context path से केस-संवेदनशील मिलान का उपयोग करके करता था, जबकि
अनुरोध को endpoint तक भेजने वाली राउटिंग वही नियम लागू नहीं करती थी। दोनों तुलनाएँ किसी भी ऐसे पथ के लिए
असहमत होती हैं जिसका केस कॉन्फ़िगर किए गए मान से भिन्न है: कोई बाहरी कॉलर context-path खंड में किसी वर्ण का केस
बदल सकता है ताकि security constraint उस पथ को संरक्षित के रूप में न पहचाने, जबकि अनुरोध फिर भी उसी endpoint तक
भेजा जाता है। constraint छोड़ दिया जाता है और संरक्षित रूट तक बिना उसे संतुष्ट किए पहुँचा जाता है — किसी
क्रेडेंशियल, पूर्व पहुँच, या विशेष कॉन्फ़िगरेशन की आवश्यकता नहीं।
| रनटाइम | निर्देशिका | स्टैक |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-netty-http 4.22.0 (प्रभावित; ठीक किया गया 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-netty-http 3.29.0 (Camel 4.15.0, प्रभावित; ठीक किया गया नियंत्रण 3.40.0 / Camel 4.22.1) |
एक netty-http consumer context path /app पर सुनता है और एक SecurityConstraintMapping द्वारा सुरक्षित है जो
/secret (endpoint के सापेक्ष) को एक अस्वीकार करने वाले authenticator के साथ संरक्षित करता है। नीचे दिए गए दोनों
अनुरोधों में कोई क्रेडेंशियल नहीं है:
GET /app/secret (कॉन्फ़िगर किया गया केस) → constraint इसे संरक्षित के रूप में पहचानता है → 401।GET /App/secret (context-path का केस बदला गया) → handler का extractTarget context path को केवल
केस-संवेदनशील startsWith पर हटाता है, इसलिए हटाना छोड़ दिया जाता है और constraint उस पथ को संरक्षित के रूप
में नहीं पहचानता → राउटर फिर भी इसे /app endpoint तक भेजता है → 200 और संरक्षित बॉडी, बिना प्रमाणीकरण के।ठीक किए गए बिल्ड पर दोनों अनुरोध 401 लौटाते हैं।
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
प्रभावित बिल्ड पर अपेक्षित आउटपुट:
Configured case GET /app/secret -> status 401, body:
Altered case GET /App/secret -> status 200, body: PROTECTED-ADMIN-DATA: reached the protected endpoint
>>> PROVEN: /app/secret is correctly rejected (401), but /App/secret bypassed the security constraint ...
| गुण | मान |
|---|---|
| घटक | camel-netty-http |
| CWE | CWE-178 (केस संवेदनशीलता का अनुचित प्रबंधन) |
| गंभीरता | उच्च |
| आक्रमण वेक्टर | एक अनुरोध जिसका context-path केस कॉन्फ़िगर किए गए endpoint पथ से भिन्न है |
| प्रभाव | Security constraint छोड़ा गया; संरक्षित रूट तक बिना प्रमाणीकरण के पहुँचा गया |
| प्रभावित संस्करण | 4.0.0 से 4.18.5 से पहले तक, 4.19.0 से 4.22.1 से पहले तक |
| ठीक किए गए संस्करण | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24412 |
| श्रेय | Claude Security Scan Tool |
सलाह: https://camel.apache.org/security/CVE-2026-80343.html
security constraint और context-path प्रबंधन अब पथ की तुलना एकरूपता से करते हैं (context path पर केस-असंवेदनशील रूप से), इसलिए केस बदला गया अनुरोध ठीक उसी तरह संरक्षित के रूप में पहचाना जाता है जैसे उसका कॉन्फ़िगर किया गया केस रूप, और वही प्रमाणीकरण उस पर लागू होता है।
केवल netty-http security constraint पर निर्भर रहने के बजाय रूट में ही प्राधिकरण लागू करें, या जब तक आप अपग्रेड नहीं कर सकते, तब तक security जाँच से पहले अनुरोध पथ के केस को सामान्यीकृत करें।
यह रिपॉज़िटरी शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है: Apache Camel उपयोगकर्ताओं को भेद्यता को समझने, यह सत्यापित करने में मदद करने के लिए कि क्या वे प्रभावित हैं, और यह पुष्टि करने के लिए कि अपग्रेड करने से यह हल हो जाती है। इस सामग्री का उपयोग उन सिस्टमों के विरुद्ध न करें जो आपके स्वामित्व में नहीं हैं या जिन्हें आप संचालित नहीं करते।