Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-40047 — Reproducer for CVE-2026-40047: Apache Camel camel-docling CLI argument injection / path traversal | Kitploit
उपकरण/GitHubGitHub/oscerd/cve-2026-40047
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHuboscerd/cve-2026-40047

CVE-2026-40047

Reproducer for CVE-2026-40047: Apache Camel camel-docling CLI argument injection / path traversal

रिपॉजिटरी देखें
21 महीना पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

कैमल-डॉकलिंग CLI आर्गुमेंट इंजेक्शन / पथ ट्रैवर्सल रिप्रोड्यूसर (CVE-2026-40047)

यह प्रोजेक्ट Apache Camel के camel-docling घटक में CLI आर्गुमेंट इंजेक्शन और पथ ट्रैवर्सल भेद्यता को प्रदर्शित करता है, जिसे CVE-2026-40047 के रूप में ट्रैक किया गया है। DoclingProducer बाहरी docling कमांड-लाइन टूल के आह्वान को संदेश हेडर से बनाता है; CamelDoclingCustomArguments हेडर के माध्यम से आपूर्ति किए गए कस्टम तर्क अपर्याप्त सत्यापन (एक डिनीलिस्ट प्लस एक शाब्दिक ../ जांच) के साथ जोड़े गए थे, इसलिए एक हमलावर जो उन हेडर को प्रभावित करता है, वह सबप्रोसेस में मनमाना docling CLI फ्लैग और ट्रैवर्सल-असर वाले पथ मान इंजेक्ट कर सकता है।

परामर्श: https://camel.apache.org/security/CVE-2026-40047.html

भेद्यता सारांश

तकनीकी विवरण

DoclingProducer docling आह्वान को इकट्ठा करता है और इसे java.lang.ProcessBuilder (लिस्ट फॉर्म — कोई शेल नहीं) के माध्यम से चलाता है। CamelDoclingCustomArguments हेडर से कस्टम CLI तर्क कमांड में जोड़े जाते हैं:

root@kitploit:~
// DoclingProducer.addCustomArguments(...) - प्रभावित संस्करण
List<String> customArgs = exchange.getIn().getHeader(DoclingHeaders.CUSTOM_ARGUMENTS, List.class);
if (customArgs != null && !customArgs.isEmpty()) {
    validateCustomArguments(customArgs);   // डिनीलिस्ट + शाब्दिक "../" जांच (कमजोर)
    command.addAll(customArgs);
}

प्रभावित संस्करणों में validateCustomArguments ने अवांछित फ्लैग की डिनीलिस्ट पर भरोसा किया और केवल शाब्दिक ../ वाले पथ मानों को अस्वीकार किया। परिणामस्वरूप:

  • अपरिचित फ्लैग (डिनीलिस्ट पर नहीं) सीधे docling को भेजे जाते हैं।
  • पथ-जैसे मान जो शाब्दिक ../ के बिना ट्रैवर्स करते हैं (पूर्ण पथ, या सामान्यीकृत अनुक्रम) पकड़े नहीं जाते।

चूंकि Camel docling आह्वान बनाता है, घटक इन मानों को प्रतिबंधित करने के लिए जिम्मेदार है। फिक्स (CAMEL-23212) डिनीलिस्ट को मान्यता प्राप्त फ्लैग की एक सख्त एलाउलिस्ट से बदल देता है, उत्पादक-प्रबंधित फ्लैग (--output/-o) और शेल मेटाकैरेक्टर (गहराई में रक्षा) को अस्वीकार करता है, और सत्यापन से पहले Path.normalize() के साथ पथ-जैसे मानों को सामान्यीकृत करता है।

आह्वान ProcessBuilder के लिस्ट फॉर्म का उपयोग करता है, इसलिए एक शेल मानों की व्याख्या नहीं करता — शेल मेटाकैरेक्टर के माध्यम से OS कमांड इंजेक्शन संभव नहीं है; फिक्स में मेटाकैरेक्टर अस्वीकृति गहराई में रक्षा है।

रूट

root@kitploit:~
from("direct:convert")
    .to("docling:convert?operation=CONVERT_TO_MARKDOWN&contentInBody=true");

यह रिप्रोड्यूसर इंजेक्शन को कैसे देखता है

docling एक बाहरी उपकरण है। यह रिप्रोड्यूसर एक स्टब docling (कंटेनर के अंदर PATH पर) शिप करता है जो इसे प्राप्त argv को लॉग करता है और एक मार्कडाउन फ़ाइल वापस लिखता है, ताकि इंजेक्ट किए गए तर्क HTTP प्रतिक्रिया और /tmp/docling-invocations.log में दिखाई दे। सब कुछ एक Docker इमेज (ऐप + स्टब) के अंदर चलता है — इसलिए किसी वास्तविक docling इंस्टॉल की आवश्यकता नहीं है।

आवश्यक शर्तें

  • Java 17+ और Maven 3.8+ (jar बनाने के लिए)
  • Docker (ऐप + स्टब docling चलाता है)

पुनरुत्पादन चरण

चरण 1: jar और इमेज बनाएं

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build

चरण 2: सामान्य रूपांतरण

root@kitploit:~
curl http://localhost:8080/exploit/normal
# स्टब docling प्राप्त करता है: docling --to md --ocr-lang en --output <tmp> /tmp/input.txt

चरण 3: मनमाना CLI तर्क इंजेक्ट करें

root@kitploit:~
curl "http://localhost:8080/exploit/attack"
# CamelDoclingCustomArguments इंजेक्ट करता है = [--injected-by-attacker, arbitrary-value]
# -> स्टब docling प्राप्त करता है:
#    docling --injected-by-attacker arbitrary-value --to md --ocr-lang en --output <tmp> /tmp/input.txt

# एक पथ मान जिसमें शाब्दिक "../" नहीं है (पूर्ण पथ) भी पास होता है:
curl "http://localhost:8080/exploit/attack?flag=--artifacts-path&value=/etc/attacker-controlled"

प्रभावित संस्करण पर (यह रिप्रोड्यूसर 4.18.2 पिन करता है) रूट सफल होता है और इंजेक्ट किए गए तर्क सबप्रोसेस तक पहुंचते हैं। एक निश्चित संस्करण (4.18.3 / 4.19.0) पर एलाउलिस्ट --injected-by-attacker को IllegalArgumentException के साथ अस्वीकार कर देती है और रूट विफल हो जाता है।

सफाई

root@kitploit:~
docker compose down

शोषण की शर्तें

  1. एक Camel रूट जो बाहरी रूप से प्रभावित डेटा को docling: प्रोड्यूसर के CamelDoclingCustomArguments (या पथ-असर वाले हेडर) में अग्रेषित करता है।
  2. अविश्वसनीय प्रोड्यूसरों से संदेशों पर Camel-आंतरिक हेडर की कोई स्ट्रिपिंग नहीं।

अनुशंसित फिक्स

4.18.3 / 4.19.0 में अपग्रेड करें। फिक्स मान्यता प्राप्त docling फ्लैग की एक सख्त एलाउलिस्ट का उपयोग करता है, प्रोड्यूसर-प्रबंधित फ्लैग और शेल मेटाकैरेक्टर को अस्वीकार करता है, और सत्यापन से पहले Path.normalize() के साथ पथ मानों को सामान्यीकृत करता है।

शमन

अपग्रेड करने तक:

  1. अविश्वसनीय सामग्री को CamelDoclingCustomArguments या पथ-असर वाले हेडर में मैप न करें।
  2. Camel-आंतरिक हेडर (removeHeaders("Camel*")) को अविश्वसनीय प्रोड्यूसरों से आने वाले संदेशों से हटाएं, docling: प्रोड्यूसर से पहले।

फ़ाइलें

root@kitploit:~
CVE-2026-40047/
├── pom.xml
├── Dockerfile                       # ऐप + PATH पर स्टब 'docling'
├── docker-compose.yml
├── docling-stub.sh                  # स्टब 'docling' (argv लॉग करता है, मार्कडाउन लिखता है)
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── DoclingRoute.java         # from(direct:convert).to(docling:convert)
    │   └── ExploitController.java    # CamelDoclingCustomArguments इंजेक्ट करता है
    └── resources/
        └── application.properties

अस्वीकरण

यह रिप्रोड्यूसर सुरक्षा अनुसंधान और अधिकृत परीक्षण के लिए प्रदान किया गया है, एक सार्वजनिक रूप से प्रकट और निश्चित भेद्यता के लिए। स्पष्ट अनुमति के बिना सिस्टम के विरुद्ध इसका उपयोग न करें।

टूल डाउनलोड करें
संपत्तिमान
घटकcamel-docling
प्रभावित वर्गorg.apache.camel.component.docling.DoclingProducer (addCustomArguments / validateCustomArguments)
मूल कारणCamelDoclingCustomArguments (एक List<String>) को docling CLI तर्कों में एक कमजोर डिनीलिस्ट + शाब्दिक ../ जांच के साथ जोड़ा गया
CWECWE-88 (आर्गुमेंट इंजेक्शन) / CWE-22 (पथ ट्रैवर्सल)
प्रभावबाहरी टूल में मनमाना/अनपेक्षित docling CLI फ्लैग और निर्देशिका-बाहर पथ मानों का इंजेक्शन। OS कमांड इंजेक्शन नहीं (लिस्ट-आधारित ProcessBuilder, कोई शेल नहीं)।
प्रभावित संस्करण4.15.0 से 4.18.3 से पहले
निश्चित संस्करण4.18.3, 4.19.0
JIRACAMEL-23212
रिपोर्टरAndrea Cosentino (Apache Software Foundation)