
Apache Camel camel-mail MimeMultipart हेडर इंजेक्शन (CVE-2026-59230) के लिए प्रूफ-ऑफ-कॉन्सेप्ट रिप्रोड्यूसर, जो Spring Boot और Quarkus रनटाइम में CamelHttpUri इंजेक्शन के माध्यम से SSRF प्रदर्शित करते हैं।
MimeMultipart हेडर इंजेक्शन (headersInline)एक ही Apache Camel भेद्यता के लिए चलाने योग्य प्रूफ-ऑफ-कॉन्सेप्ट रिप्रोड्यूसर, प्रति रनटाइम एक:
| रनटाइम | निर्देशिका | स्टैक |
|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-spring-boot 4.18.2 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (bundles Camel 4.20.0) |
दोनों प्रभावित संस्करण हैं (समस्या 4.14.9 / 4.18.4 / 4.22.0 में हल हो गई है), और दोनों एक ही दोष प्रदर्शित करते हैं: camel-mail MimeMultipart डेटा प्रारूप, headersInline=true के साथ अनमार्शल करते समय, आने वाले संदेश के हर गैर-मानक MIME हेडर को setHeader के माध्यम से Camel Exchange पर कॉपी करता है, बिना किसी HeaderFilterStrategy को लागू किए। MIME हेडर के नाम अविश्वसनीय बॉडी से आते हैं, इसलिए एक प्रेषक Camel-आंतरिक नेमस्पेस (जैसे CamelHttpUri) में एक हेडर रख सकता है और उसे Exchange पर सेट करवा सकता है — तब भी जब रूट ने HTTP सीमा पर Camel* हेडर हटा दिए हों। एक डाउनस्ट्रीम घटक फिर इंजेक्टेड कंट्रोल हेडर को पढ़ता है (हेडर इंजेक्शन → CWE-74)।
इन रिप्रोड्यूसर में इंजेक्टेड CamelHttpUri डाउनस्ट्रीम HTTP प्रोड्यूसर को इच्छित /legit-backend से एक आंतरिक /internal/secret एंडपॉइंट पर पुनर्निर्देशित करता है (SSRF), जिससे आंतरिक डेटा स्पष्ट रूप से लौटता है।
प्रत्येक उपनिर्देशिका एक स्व-निहित प्रोजेक्ट है जिसमें अपना Dockerfile, docker-compose.yml, और पूर्ण विवरण और पुनरुत्पादन चरणों के साथ README शामिल है। संक्षेप में, दोनों में से किसी के लिए:
cd camel-spring-boot # or: cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
प्रभावित बिल्ड पर अपेक्षित आउटपुट:
1) Benign MIME (no injected header):
/ingest responded: LEGIT: your message was accepted
2) Malicious MIME (injected MIME header 'CamelHttpUri: http://localhost:8080/internal/secret'):
/ingest responded: SECRET: internal_db_password=S3cr3t-INTERNAL-9f2a
>>> PROVEN: ... redirecting the HTTP producer to an internal service (SSRF): true
| गुण | मान |
|---|---|
| घटक | camel-mail — MimeMultipart डेटा प्रारूप (Spring Boot: camel-mail-starter; Quarkus: camel-quarkus-mail) |
| CWE | CWE-20 (Improper Input Validation) → CWE-74 (Injection) |
| आक्रमण वेक्टर | headersInline=true के साथ अनमार्शल की गई एक क्राफ्टेड MIME मल्टीपार्ट बॉडी |
| प्रभाव | Exchange पर Camel-आंतरिक नियंत्रण हेडर का इंजेक्शन (यहाँ: CamelHttpUri → SSRF) |
| प्रभावित संस्करण | From 2.17.0 before 4.14.9, from 4.15.0 before 4.18.4, from 4.19.0 before 4.22.0 |
| हल किए गए संस्करण | 4.14.9, 4.18.4, 4.22.0 |
| JIRA | CAMEL-23891 |
| श्रेय | Atuin — Automated Vulnerability Discovery Engine, anciety of Tencent Xuanwu Lab |
MimeMultipartDataFormat.copyNonStandardHeaders अब प्रत्येक आने वाले MIME हेडर को Exchange पर सेट करने से पहले MailHeaderFilterStrategy से गुज़ारता है, जो मेल उपभोक्ता द्वारा पहले से लागू की जाने वाली इनबाउंड फ़िल्टरिंग के अनुरूप है — इसलिए अविश्वसनीय बॉडी से आने वाले Camel* हेडर को शब्दशः कॉपी करने के बजाय हटा दिया जाता है:
// fixed
if (headerFilterStrategy.applyFilterToExternalHeaders(header.getName(), header.getValue(),
camelMessage.getExchange())) {
continue; // filtered
}
camelMessage.setHeader(header.getName(), header.getValue());
यह रिपॉज़िटरी शैक्षिक और सुरक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है: Apache Camel उपयोगकर्ताओं को भेद्यता को समझने, यह सत्यापित करने में मदद करने के लिए कि क्या वे प्रभावित हैं, और यह पुष्टि करने के लिए कि अपग्रेड करने से यह हल हो जाती है। पेलोड हानिरहित हैं (एक स्थानीय एंडपॉइंट पर पुनर्निर्देशन)। इस सामग्री का उपयोग उन प्रणालियों के विरुद्ध न करें जिनके स्वामी या संचालक आप नहीं हैं।