
CVE-2026-79984 के लिए रन करने योग्य प्रूफ-ऑफ-कॉन्सेप्ट रिप्रोड्यूसर, जो Apache Camel camel-mina-sftp में पाथ ट्रैवर्सल है, इसमें दुर्भावनापूर्ण SFTP सर्वर फ़िक्स्चर और प्रभावित बनाम ठीक किए गए बिल्ड शामिल हैं।
Apache Camel भेद्यता के लिए चलाने योग्य प्रूफ-ऑफ-कॉन्सेप्ट पुनरुत्पादक, जहाँ mina-sftp उपभोक्ता — जो अन्य रिमोट-फ़ाइल उपभोक्ताओं के समान RemoteFileConsumer आधार वर्ग से व्युत्पन्न होता है — प्रत्येक पोल की गई फ़ाइल का निरपेक्ष रिमोट पथ कॉन्फ़िगर की गई निर्देशिका को सर्वर की निर्देशिका सूची में बताए गए नाम के साथ जोड़कर बनाता है, बिना किसी लेक्सिकल नॉर्मलाइज़ेशन और बिना किसी कंटेनमेंट जाँच के। वह पथ फिर पुनर्प्राप्ति के लिए ऑपरेंड बन जाता है (हमेशा), और विलोपन या नाम बदलने के लिए जब delete=true, move, preMove, moveFailed या readLock=rename कॉन्फ़िगर हो।
SFTP निर्देशिका-प्रविष्टि नाम सर्वर द्वारा प्रदान की गई एक कच्ची प्रोटोकॉल स्ट्रिंग है, इसलिए एक समझौता किया गया, दुर्भावनापूर्ण या मल्टी-टेनेंट सर्वर ऐसा नाम रिपोर्ट कर सकता है जो एकल पथ खंड न हो।
यह CVE-2026-79983 (
camel-ftp) काmina-sftpसहोदर है; दोनों एक ही मूल कारण और एक ही समाधान साझा करते हैं।
| रनटाइम | निर्देशिका | स्टैक |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-mina-sftp 4.22.0 (प्रभावित; 4.22.1 में ठीक किया गया) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.39.0 + camel-quarkus-mina-sftp 3.39.0 (Camel 4.22.0, प्रभावित; नियंत्रण 3.40.0 / Camel 4.22.1 में ठीक किया गया) |
camel-mina-sftpको Camel 4.18.0 में पेश किया गया था, इसलिए यह घटक नवीनतम-संख्या वाले Camel Quarkus द्वारा बंडल किए गए Camel 4.15.0 में मौजूद नहीं है; यह पुनरुत्पादक Camel Quarkus 3.39.0 (Camel 4.22.0, प्रभावित) का उपयोग करता है, और 3.40.0 (Camel 4.22.1) को पैच किए गए नियंत्रण के रूप में रखता है। इसलिए दोनों मॉड्यूल प्रभावित और ठीक किए गए व्यवहार को प्रदर्शित करते हैं।
ऐप एक जानबूझकर दुर्भावनापूर्ण SFTP सर्वर (Apache MINA SSHD) एम्बेड करता है। यह एक वास्तविक अस्थायी निर्देशिका
ट्री परोसता है, लेकिन अपने SSH_FXP_READDIR उत्तर में, पोल की गई निर्देशिका /upload में एक फ़ाइल का नाम
ट्रैवर्सल स्ट्रिंग d/../../outside.txt में बदल देता है (एक getShortName ओवरराइड के माध्यम से)। नाम बिंदु से
शुरू नहीं होता, इसलिए Camel का छिपी-फ़ाइल नियम इसे नहीं पकड़ता, और /upload + d/../../outside.txt /outside.txt में
हल हो जाता है, जो पोल की गई निर्देशिका से एक स्तर ऊपर है। एक सादा mina-sftp उपभोक्ता /upload को पोल करता है।
normal.txt और बाहर निकलने वाली /outside.txt दोनों को पुनर्प्राप्त करता है।normal.txt रखता है और बाहर निकलने वाली प्रविष्टि को छोड़ देता है, लॉग करते हुए
Skipping file as it resolves outside the starting directory: upload/d/../../outside.txt।cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
प्रभावित बिल्ड पर अपेक्षित आउटपुट:
name=[d/../../outside.txt] <<< FILE FROM OUTSIDE THE POLLED DIRECTORY
content: OUTSIDE-SECRET (/outside.txt, a file the consumer should never reach)
name=[normal.txt] (inside)
| गुण | मान |
|---|---|
| घटक | camel-mina-sftp (mina-sftp स्कीम) |
| CWE | CWE-22 (किसी पथनाम का प्रतिबंधित निर्देशिका तक अनुचित सीमन) |
| गंभीरता | उच्च |
| आक्रमण वेक्टर | एक READDIR प्रविष्टि नाम (सर्वर-प्रदत्त) जो एकल पथ खंड नहीं है |
| प्रभाव | पढ़ें — और, delete/move/readLock=rename के साथ, हटाएँ या नाम बदलें — एंडपॉइंट के क्रेडेंशियल्स का उपयोग करते हुए, पोल की गई निर्देशिका के बाहर की फ़ाइलें |
| प्रभावित संस्करण | 4.18.0 से 4.18.5 से पहले तक, 4.19.0 से 4.22.1 से पहले तक |
| ठीक किए गए संस्करण | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24487 |
| श्रेय | NSSL, SJTU से Dilrevx |
सलाह: https://camel.apache.org/security/CVE-2026-79984.html
GenericFileConsumer.isWithinStartingDirectory (RemoteFileConsumer द्वारा ओवरराइड किया गया, जिससे mina-sftp
कंज़्यूमर व्युत्पन्न होता है) हल किए गए पथ को संक्षिप्त करता है और पथ-खंड सीमाओं पर सत्यापित करता है कि यह पोल की गई
निर्देशिका के अंदर ही रहता है; बाहर हल होने वाली प्रविष्टि को चेतावनी के साथ छोड़ दिया जाता है जबकि वैध प्रविष्टियाँ अभी भी
प्रोसेस होती हैं।
सर्वर होस्ट कुंजी सत्यापित करें, कंज़्यूमर को filter/antInclude/include के साथ केवल एकल-खंड
नाम स्वीकार करने के लिए सीमित करें, और ऐसे सर्वरों के विरुद्ध delete/move/preMove/moveFailed/readLock=rename से बचें जिनकी लिस्टिंग
पूरी तरह विश्वसनीय नहीं है। जहाँ संभव हो, सर्वर खाते को पोल की गई निर्देशिका तक सीमित रखें।
यह रिपॉज़िटरी शैक्षिक और रक्षात्मक उद्देश्यों के लिए प्रकाशित की गई है: Apache Camel उपयोगकर्ताओं को भेद्यता को समझने, यह सत्यापित करने में मदद करने के लिए कि क्या वे प्रभावित हैं, और पुष्टि करने के लिए कि अपग्रेड करने से यह हल हो जाती है। दुर्भावनापूर्ण सर्वर और "secret" निष्क्रिय स्थानीय फ़िक्स्चर हैं। इस सामग्री का उपयोग उन सिस्टमों के विरुद्ध न करें जिनके आप स्वामी या संचालक नहीं हैं।