CVE-2026-95664
Apache Camel: Camel-AWS2-S3 Producer CamelAwsS3Key हेडर से अविश्वसनीय S3 ऑब्जेक्ट कुंजियों का सरल एक्सप्रेशन के रूप में मूल्यांकन करता है
- प्रकाशित
- 26 अक्टू॰ 2026
- अद्यतन
- 26 अक्टू॰ 2026
- सीएनए असाइन करना
- apache
- साक्ष्य देखे गए
- 30 अक्टू॰ 2026
प्राथमिक सीवीएसएस
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:Nकम · अगले 30 दिन
- प्रतिशत
- 57.6%
- मॉडल दिनांक
- 29 अक्टू॰ 2026
ईपीएसएस एक सांख्यिकीय अनुमान है, कोई निश्चितता या प्रभाव का माप नहीं। इसे सीवीएसएस, केईवी स्थिति, एक्सपोज़र और अपने वातावरण के साथ मिलाएं।
सारांश
Apache Camel AWS2-s3 घटक में Expression Language कथन में प्रयुक्त विशेष तत्वों के अनुचित निष्प्रभावीकरण ('Expression Language Injection') की भेद्यता। यह समस्या Apache Camel को प्रभावित करती है: 4.8.0 से 4.18.5 से पहले तक, 4.19.0 से 4.22.2 से पहले तक। जिस ऑब्जेक्ट को यह अपलोड, पढ़ता या हटाता है, उसके लिए camel-aws2-s3 प्रोड्यूसर CamelAwsS3Key संदेश हेडर से कुंजी लेता है और केवल तभी एंडपॉइंट पर कॉन्फ़िगर किए गए keyName विकल्प पर वापस जाता है जब वह हेडर अनुपस्थित हो। 4.8.0 से, AWS2S3Utils.determineKey() परिणामी मान को Simple भाषा में भी पास करता था जब भी उसमें ${ या $simple{ होता था, ताकि कोई रूट गतिशील कुंजी का उपयोग कर सके, और यह मूल्यांकन हेडर से लिए गए मान पर भी लागू होता था साथ ही कॉन्फ़िगर किए गए विकल्प पर भी। हालाँकि, हेडर रूट कॉन्फ़िगरेशन नहीं है: aws2-s3 कंज्यूमर जिन एक्सचेंजों को बनाता है, उन पर CamelAwsS3Key को उस ऑब्जेक्ट की कुंजी पर सेट करता है जिसे उसने पढ़ा है, अर्थात बकेट में ऑब्जेक्ट का नाम। एक ऐसे रूट में जो एक aws2-s3 एंडपॉइंट से उपभोग करने और दूसरे में उत्पादन करने के अलावा कुछ नहीं करता, इसलिए प्रत्येक उपभोग किए गए ऑब्जेक्ट का नाम प्रोड्यूसर तक पहुँचता था, और किसी भी मार्कर वाले नाम का मूल्यांकन एक अभिव्यक्ति के रूप में किया जाता था, भले ही रूट लेखक ने कभी कोई मूल्यांकन नहीं मांगा हो, और प्रोड्यूसर पर keyName कॉन्फ़िगर करने से यह नहीं रोका गया, क्योंकि हेडर को प्राथमिकता मिलती थी। जिस कुंजी को किसी रूट ने अन्य संदेश सामग्री से हेडर में कॉपी किया था, उसका मूल्यांकन भी उसी तरह किया जाता था। इसलिए, जो कोई भी ऐसे बकेट में ऑब्जेक्ट का नाम चुन सकता था जिसे ऐसा रूट उपभोग करता है, आमतौर पर वह प्रिंसिपल जिसे उस बकेट में अपलोड करने की अनुमति है, वह Camel प्रक्रिया में अपनी पसंद की Simple अभिव्यक्तियों का मूल्यांकन करवा सकता था। Simple भाषा JVM सिस्टम प्रॉपर्टीज़, पर्यावरण चर और कॉन्फ़िगरेशन प्रॉपर्टीज़ पढ़ सकती है, जो आमतौर पर क्रेडेंशियल रखती हैं, और, जहाँ camel-bean क्लासपाथ पर है, रजिस्ट्री में बीन्स पर विधियाँ लागू कर सकती है। मूल्यांकित परिणाम वह कुंजी बन गया जिसका उपयोग प्रोड्यूसर ने किया, इसलिए किसी मान को वापस पढ़ने के लिए अतिरिक्त रूप से गंतव्य बकेट में ऑब्जेक्ट नाम देखने की क्षमता की आवश्यकता थी, जबकि विधि आह्वान इसके बिना ही प्रभावी हो गया; उपभोग किए गए बकेट में ऑब्जेक्ट का नाम देने की आवश्यकता के साथ, यही कारण है कि गंभीरता को मध्यम आंका गया है। बकेट नाम भी उसी मूल्यांकन से गुज़रा, लेकिन कंज्यूमर केवल अपने स्वयं के एंडपॉइंट पर कॉन्फ़िगर किए गए बकेट को ही बकेट हेडर में रखता है, कभी भी रिमोट ऑब्जेक्ट से प्राप्त मान नहीं, इसलिए बकेट नाम इस तरह से पहुँच योग्य नहीं था। 4.8.0 से पहले के रिलीज़ हेडर से कुंजी को जैसा दिया गया था वैसा ही उपयोग करते थे और प्रभावित नहीं हैं। उपयोगकर्ताओं को संस्करण 4.23.0 में अपग्रेड करने की सिफारिश की जाती है, जो इस समस्या को ठीक करता है। यदि उपयोगकर्ता 4.22.x रिलीज़ स्ट्रीम पर हैं, तो उन्हें 4.22.2 में अपग्रेड करने का सुझाव दिया जाता है। यदि उपयोगकर्ता 4.18.x रिलीज़ स्ट्रीम पर हैं, तो उन्हें 4.18.5 में अपग्रेड करने का सुझाव दिया जाता है। 4.8.x से 4.17.x और 4.19.x से 4.21.x रिलीज़ लाइनें इस समस्या के समाधान से पहले ही जीवन-चक्र के अंत तक पहुँच गई थीं और उन्हें कोई समाधान नहीं मिलेगा, इसलिए उन पर तैनातियों को समर्थित रिलीज़ पर स्थानांतरित होना चाहिए। अपग्रेड करने के बाद, संदेश हेडर के माध्यम से आपूर्त की गई कुंजी या बकेट नाम का उपयोग शाब्दिक रूप से किया जाता है, इसलिए जिस रूट ने CamelAwsS3Key या CamelAwsS3OverrideBucketName हेडर में बिना मूल्यांकन वाली Simple अभिव्यक्ति रखी थी, उसे इसका मूल्यांकन रूट में ही करना होगा, उदाहरण के लिए setHeader और simple() के साथ, या इसे एंडपॉइंट के keyName या bucketName विकल्प के रूप में कॉन्फ़िगर करना होगा। उन तैनातियों के लिए जो तुरंत अपग्रेड नहीं कर सकते, किसी ऑब्जेक्ट नाम से या अन्य अविश्वसनीय संदेश सामग्री से प्राप्त कुंजी को बिना जाँच के aws2-s3 प्रोड्यूसर तक न पहुँचने दें: उन रूट्स में जो एक्सचेंजों को aws2-s3 कंज्यूमर से aws2-s3 प्रोड्यूसर तक पास करते हैं, या तो प्रोड्यूसर से पहले removeHeader(“CamelAwsS3Key”) के साथ CamelAwsS3Key हेडर को हटा दें, ताकि एंडपॉइंट पर कॉन्फ़िगर किया गया keyName उपयोग किया जाए, या उन एक्सचेंजों को अस्वीकार करें जिनके CamelAwsS3Key हेडर में ${ या $simple{ है। केवल keyName कॉन्फ़िगर करना कोई वर्कअराउंड नहीं है, क्योंकि हेडर को इस पर प्राथमिकता मिलती है। गहन रक्षा के रूप में, केवल विश्वसनीय प्रिंसिपलों को उन बकेट्स में लिखने की अनुमति दें जिन्हें Camel रूट्स उपभोग करते हैं।
स्रोत
CVE-2026-95664 के लिए रन करने योग्य Spring Boot और Quarkus रिप्रोड्यूसर, जो camel-aws2-s3 में CamelAwsS3Key हेडर के माध्यम से Simple एक्सप्रेशन इंजेक्शन का प्रदर्शन करता है और फिक्स का सत्यापन करता है।
जिम्मेदारीपूर्ण उपयोग
भेद्यता जानकारी का उपयोग केवल उन प्रणालियों पर करें जिनके मालिक आप हैं या परीक्षण के लिए अधिकृत हैं। किटप्लॉइट सार्वजनिक अनुसंधान मेटाडेटा से लिंक करता है और शोषण कोड या दुर्भावनापूर्ण पेलोड को संग्रहीत नहीं करता है।