
CVE-2026-40987 PoC
यह रिपॉजिटरी Spring के आधिकारिक सुरक्षा सलाहकार के रूप में प्रकाशित CVE-2026-40987 का न्यूनतम पुनरुत्पादन PoC है।
Remote-file synchronizer in Spring Integration writes server-supplied filename under localDirectory without canonicalizationAV:N/AC:H/PR:L/UI:R/S:C/C:L/I:H/A:LSpring Integration का remote-file synchronizer रिमोट सर्वर द्वारा प्रदान किए गए फ़ाइल नाम को स्थानीय स्टोरेज पथ बनाते समय वैसे ही उपयोग कर सकता था। यदि कैनोनिकल पथ सत्यापन पर्याप्त नहीं था, तो एक दुर्भावनापूर्ण या समझौता किया गया FTP/SFTP/SMB सर्वर ../escaped-by-ftp-list.txt जैसे फ़ाइल नाम लौटाकर कॉन्फ़िगर किए गए localDirectory के बाहर फ़ाइल लिख सकता है।
आधिकारिक सलाह के अनुसार, यह केवल FTP की समस्या नहीं है, बल्कि Spring Integration के FTP/SFTP/SMB रिमोट फ़ाइल सिंक्रोनाइज़ेशन परिवार से संबंधित समस्या है। यह PoC उनमें से FtpInboundFileSynchronizer का उपयोग करके उसी भेद्यता पथ को सबसे छोटे और स्पष्ट रूप में पुनरुत्पादित करता है।
आधिकारिक सलाह के अनुसार प्रभावित उत्पाद:
प्रभावित संस्करण:
7.0.0 - 7.0.46.5.0 - 6.5.86.4.0 - 6.4.116.3.0 - 6.3.145.5.0 - 5.5.20सुधारित संस्करण:
7.0.5 या 7.0.4.16.5.9 या 6.5.8.16.4.126.3.155.5.21परीक्षण दो पथ दर्शाता है।
SpringIntegrationRemoteFilePathTraversalTest
../escaped-by-spring-integration.txt है, तो क्या कॉन्फ़िगर किए गए स्थानीय निर्देशिका के बाहर फ़ाइल पथ बनता है।SpringIntegrationFtpPathTraversalTest
LIST प्रतिक्रिया में ../escaped-by-ftp-list.txt डालता है।FtpInboundFileSynchronizer को यह फ़ाइल नाम प्राप्त करके incoming/../escaped-by-ftp-list.txt डाउनलोड करता है और परिणामी फ़ाइल downloads निर्देशिका के बाहर बनती है।PoC का मुख्य प्रवाह इस प्रकार है:
configured localDirectory = <temp>/downloads
remote LIST filename = ../escaped-by-ftp-list.txt
resulting local path = <temp>/downloads/../escaped-by-ftp-list.txt
normalized location = <temp>/escaped-by-ftp-list.txt
अर्थात, एप्लिकेशन इच्छित डाउनलोड निर्देशिका से बाहर फ़ाइल लिख सकता है।
Windows:
.\mvnw.cmd test
macOS/Linux:
./mvnw test
भेद्य संस्करण के लिए अपेक्षित परिणाम:
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS
परीक्षण की सफलता का अर्थ है "भेद्य व्यवहार पुनरुत्पादित हुआ"। अर्थात, भेद्य निर्भरता में परीक्षण पास हो जाता है और निर्देशिका से बाहर लिखने की क्रिया को सिद्ध करता है।
निम्नलिखित कमांड से कई भेद्य संस्करणों की जांच की जा सकती है:
.\mvnw.cmd "-Dspring-integration.version=6.4.10" test
.\mvnw.cmd "-Dspring-integration.version=6.5.8" test
.\mvnw.cmd "-Dspring-integration.version=7.0.4" test
.\mvnw.cmd "-Dspring-integration.version=7.1.0-RC1" test
इस रिपॉजिटरी का डिफ़ॉल्ट मान spring-integration.version=7.0.4 है।
यह भेद्यता हमलावर को क्लाइंट एप्लिकेशन के स्थानीय फ़ाइल सिस्टम पर हमलावर-नियंत्रित सामग्री लिखने की अनुमति देने की समस्या है। हमलावर को सामान्य HTTP क्लाइंट नहीं, बल्कि उस रिमोट फ़ाइल सर्वर के प्रतिक्रिया में हेरफेर करने में सक्षम होना चाहिए जिसे एप्लिकेशन विश्वास करता है और पोल करता है।
इसलिए पूर्व शर्तें मौजूद हैं, लेकिन यदि शर्तें पूरी होती हैं, तो निम्नलिखित प्रभाव संभव हैं:
आधिकारिक सलाह ने इस समस्या को High दर्जा दिया है।
आधिकारिक Spring सलाह में निम्नलिखित शोधकर्ताओं को जिम्मेदारी से रिपोर्ट करने के रूप में सूचीबद्ध किया गया है: