
Apache Camel camel-atmosphere-websocket डिस्पैच हेडर इंजेक्शन (CVE-2026-71300) के लिए प्रूफ-ऑफ-कॉन्सेप्ट रिप्रोड्यूसर, जो दर्शाता है कि कैसे एक इंजेक्ट किया गया हेडर WebSocket संदेशों को हमलावर द्वारा चुने गए प्राप्तकर्ता की ओर पुनर्निर्देशित कर सकता है।
Apache Camel भेद्यता के लिए चलाने योग्य proof-of-concept रिप्रोड्यूसर, जहाँ camel-atmosphere-websocket प्रोड्यूसर अपने WebSocket प्राप्तकर्ताओं को websocket.* Exchange हेडर से चुनता है जिनके नाम Camel नेमस्पेस के बाहर आते हैं — इसलिए एक HTTP HeaderFilterStrategy (जो केवल Camel* / camel* को हटाता है) उन्हें स्वीकार कर लेता है, और एक बाहरी प्रेषक प्रोड्यूसर के डिस्पैच निर्णय पर कब्ज़ा कर सकता है।
| रनटाइम | निर्देशिका | स्टैक |
|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-atmosphere-websocket 4.18.2 |
Camel Quarkus: कोई
camel-quarkus-atmosphere-websocketएक्सटेंशन नहीं है, इसलिए इस घटक को Camel Quarkus पर नहीं चलाया जा सकता — रिप्रोड्यूसर केवल Spring Boot के लिए है।
एक रूट HTTP कंज़्यूमर को atmosphere-websocket प्रोड्यूसर से जोड़ता है, और websocket.connectionKey हेडर स्वयं सेट करके प्रत्येक HTTP संदेश को एकल पिन किए गए WebSocket प्राप्तकर्ता ("victim") तक पहुँचाता है। लेकिन WebsocketProducer.process list हेडर websocket.connectionKey.list को single-key हेडर से पहले जाँचता है, और वह dotted नाम Camel नेमस्पेस में नहीं है, इसलिए HTTP हेडर फ़िल्टर उसे नहीं हटाता। इस प्रकार एक इंजेक्ट किया गया websocket.connectionKey.list हेडर अनुरोध से Exchange में पार हो जाता है और पिन किए गए प्राप्तकर्ता को ओवरराइड कर देता है — victim के लिए बना संदेश उसके बजाय हमलावर द्वारा चुने गए कनेक्शन पर पहुँच जाता है।
POST /notify ──► setHeader(websocket.connectionKey = victim) ──► atmosphere-websocket producer ──► victim peer
│ ▲
└─ injected header websocket.connectionKey.list: <attacker key> ───────┘ (tested first → wins)
टेस्ट हार्नेस पर एक टिप्पणी। atmosphere WebSocket रनटाइम को सर्वलेट कंटेनर का WebSocket अपग्रेड और फ्रेमवर्क का अपना इनिशियलाइज़ेशन चाहिए, जिसे एक साधारण standalone Spring Boot ऐप से नहीं चलाया जा सकता। इसलिए यह रिप्रोड्यूसर वास्तविक HTTP इनग्रेस पर वास्तविक
WebsocketProducerडिस्पैच लॉजिक का अभ्यास करता है — केवल दो जुड़े हुए पीयर स्टैंड-इन हैं जो सीधे एंडपॉइंट केWebSocketStoreमें पंजीकृत होते हैं (जैसे atmosphere फ्रेमवर्क वास्तविक ब्राउज़र कनेक्शन पंजीकृत करता)। हेडर-फ़िल्टर बाइपास और प्रोड्यूसर की डिस्पैच प्राथमिकता — वास्तविक भेद्यता — वास्तव में अभ्यास में लाई जाती है।
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
प्रभावित बिल्ड पर अपेक्षित आउटपुट:
1) Benign POST /notify (no injected header):
victim received: [hello for the victim]
attacker received: []
2) Injected POST /notify with header 'websocket.connectionKey.list: attacker-connection-key':
victim received: []
attacker received: [private data meant for the victim, ...]
>>> PROVEN: ... delivering a message meant for the victim to an attacker-chosen WebSocket connection instead: true
| गुण | मान |
|---|---|
| घटक | camel-atmosphere-websocket (camel-atmosphere-websocket-starter) |
| CWE | CWE-20 (अनुचित इनपुट सत्यापन) → CWE-74 (इंजेक्शन) |
| आक्रमण वेक्टर | atmosphere-websocket प्रोड्यूसर में ब्रिज किए गए अनुरोध पर इंजेक्ट किया गया websocket.connectionKey.list (या websocket.connectionKey / websocket.sendToAll) हेडर |
| प्रभाव | प्रोड्यूसर के डिस्पैच निर्णय पर कब्ज़ा करना — मनमाने WebSocket पीयर को संदेश पहुँचाना / रोकना |
| प्रभावित संस्करण | 4.0.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-24359 |
| श्रेय | बराक स्रौर (Apiiro) |
डिस्पैच हेडर कॉन्स्टेंट को Camel नेमस्पेस में पुनः नामित किया गया — CamelAtmosphereWebsocketConnectionKey, CamelAtmosphereWebsocketConnectionKeyList, CamelAtmosphereWebsocketSendToAll — ताकि HTTP HeaderFilterStrategy उन्हें ट्रांसपोर्ट सीमा पर हटा दे और कोई बाहरी प्रेषक उन्हें इंजेक्ट न कर सके। संबंधित camel-undertow वेबसॉकेट पथ CVE-2026-78329 में शामिल है।
यह रिपॉज़िटरी शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है: Apache Camel उपयोगकर्ताओं को भेद्यता समझने, यह जाँचने में मदद करने के लिए कि वे प्रभावित हैं या नहीं, और पुष्टि करने के लिए कि अपग्रेड करने से यह हल हो जाती है। इस सामग्री का उपयोग उन प्रणालियों के विरुद्ध न करें जिनके स्वामी या संचालक आप नहीं हैं।