
Apache Camel camel-undertow हेडर फ़िल्टर बायपास (CVE-2026-78329) के लिए अवधारणा-प्रमाण प्रतिकृति, जो websocket.* हेडर इंजेक्शन का प्रदर्शन करती है तथा प्रभावित संस्करण विवरण और फिक्स सत्यापन प्रदान करती है।
websocket.* इंजेक्शन)Apache Camel भेद्यता के लिए चलाने योग्य proof-of-concept reproducer, जहाँ UndertowEndpoint ने अपने
headerFilterStrategy को आधार HttpHeaderFilterStrategy पर डिफ़ॉल्ट किया और उस instance को UndertowHttpBinding में डाल दिया
जिसे वह बनाता है, ओवरराइट करते हुए UndertowHeaderFilterStrategy को, जिसे DefaultUndertowHttpBinding स्थापित करता है। जब तक कोई
डिप्लॉयमेंट ने कस्टम binding या स्पष्ट headerFilterStrategy प्रदान नहीं किया, undertow-विशिष्ट फ़िल्टरिंग कभी नहीं
चली — रणनीति ऑब्जेक्ट बनाया गया और उससे परामर्श लिए जाने से पहले तुरंत बदल दिया गया।
| रनटाइम | निर्देशिका | स्टैक |
|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-undertow 4.18.2 |
Camel Quarkus: कोई
camel-quarkus-undertowएक्सटेंशन नहीं है (Quarkus अपना खुद का Vert.x HTTP स्टैक उपयोग करता है), इसलिए यह घटक Camel Quarkus पर नहीं चलाया जा सकता — reproducer केवल Spring Boot के लिए है।
परिणाम यह है कि लेगेसी websocket. Exchange-हेडर उपसर्ग undertow पर फ़िल्टर नहीं किया जाता
परिवहन सीमा पर किसी भी दिशा में। इसलिए एक undertow HTTP कंज्यूमर उस रूप के इनबाउंड wire हेडरों को मैप करता है
(websocket.connectionKey, websocket.connectionKey.list, websocket.sendToAll, …) को Exchange पर, जहाँ एक
undertow WebSocket प्रोड्यूसर उन्हें dispatch निर्देश के रूप में पढ़ता है और किसी अन्य peer को डिलीवर करने के लिए बनाया जा सकता है, बजाय
उस peer के जिसे रूट ने इच्छित किया था — atmosphere-websocket के समान dispatch-hijack श्रेणी
CVE-2026-71300.
यह reproducer एक HTTP अनुरोध भेजता है जिसमें websocket.* dispatch हेडर के साथ एक Camel* कंट्रोल हेडर होता है, और
दिखाता है कि वास्तव में Exchange तक क्या पहुँचा: websocket.* हेडर सीमा पार करते हैं (बिना फ़िल्टर हुए), जबकि Camel*
हटा दिया जाता है — यह साबित करते हुए कि आधार फ़िल्टर (undertow वाला नहीं) प्रभावी था।
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
प्रभावित बिल्ड पर अपेक्षित आउटपुट:
What actually reached the Exchange, as echoed by the undertow route:
websocket.connectionKey.list on Exchange = [attacker-connection-key]
websocket.sendToAll on Exchange = [true]
CamelFoo on Exchange (control) = []
>>> PROVEN: the undertow endpoint applied the base HttpHeaderFilterStrategy (Camel* filtered) instead of the
>>> UndertowHeaderFilterStrategy, so the legacy websocket.* dispatch headers passed onto the Exchange ...
| प्रॉपर्टी | मान |
|---|---|
| घटक | camel-undertow (camel-undertow-starter) |
| CWE | CWE-20 (अनुचित इनपुट सत्यापन) → CWE-74 (इंजेक्शन) |
| हमला वेक्टर | undertow HTTP कंज्यूमर पर इनबाउंड websocket.* हेडर, undertow WebSocket प्रोड्यूसर द्वारा dispatch निर्देश के रूप में पढ़े जाते हैं |
| प्रभाव | WebSocket प्रोड्यूसर के dispatch निर्णय पर कब्ज़ा — किसी भी WebSocket peer को डिलीवर करना / उनसे रोकना |
| प्रभावित संस्करण | 4.11.0 से 4.14.9 से पहले तक, 4.15.0 से 4.18.4 से पहले तक, 4.19.0 से 4.22.0 से पहले तक |
| सुधारित संस्करण | 4.14.9, 4.18.4, 4.22.0 |
| JIRA | CAMEL-24360 |
| श्रेय | Andrea Cosentino (Apache Software Foundation); Barak Srour (Apiiro) |
undertow एंडपॉइंट अब binding के UndertowHeaderFilterStrategy को ओवरराइट नहीं करता, जो
websocket. उपसर्ग (CAMEL-23588 में जोड़ा गया) दोनों दिशाओं में फ़िल्टर करता है — इसलिए dispatch हेडर
परिवहन सीमा पर हटा दिए जाते हैं और एक बाहरी प्रेषक उन्हें अब इंजेक्ट नहीं कर सकता।
यह रिपॉज़िटरी शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है: Apache Camel उपयोगकर्ताओं को भेद्यता समझने में मदद करने, यह सत्यापित करने के लिए कि वे प्रभावित हैं, और पुष्टि करने के लिए कि अपग्रेड इसे हल करता है। इस सामग्री का उपयोग उन सिस्टमों के विरुद्ध न करें जिनके आप स्वामी या संचालक नहीं हैं।