
CVE-2025-70342: erase-install में नामित पाइप के माध्यम से क्रेडेंशियल अवरोधन
erase-install v40.4 (कमिट 2c31239) से पहले के संस्करण swiftDialog क्रेडेंशियल आउटपुट को एक हार्डकोडेड पथ /var/tmp/dialog.json पर लिखता है। Apple Silicon मैक पर, पुनर्स्थापना/मिटाने के संचालन के दौरान दर्ज किए गए एडमिन क्रेडेंशियल इस अनुमानित, विश्व-लेखनीय स्थान पर लिखे जाते हैं। एक स्थानीय गैर-विशेषाधिकार प्राप्त हमलावर इस पथ पर एक नामित पाइप (FIFO) बनाकर एडमिन क्रेडेंशियल को रीयल टाइम में इंटरसेप्ट कर सकता है।
स्कोर: 7.1 (उच्च)
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
| मीट्रिक | मान |
|---|---|
| हमला वेक्टर | स्थानीय |
| हमला जटिलता | निम्न |
| आवश्यक विशेषाधिकार | निम्न |
| उपयोगकर्ता सहभागिता | आवश्यक (एडमिन क्रेडेंशियल दर्ज करता है) |
| दायरा | अपरिवर्तित |
| गोपनीयता | उच्च |
| अखंडता | उच्च |
| उपलब्धता | कोई नहीं |
फ़ाइल: erase-install.sh
पंक्ति 72:
dialog_output="/var/tmp/dialog.json"
पंक्ति 124:
"$dialog_bin" "${dialog_args[@]}" ... 2>/dev/null > "$dialog_output"
Apple Silicon मैक पर, erase-install एडमिन को swiftDialog के माध्यम से क्रेडेंशियल के लिए संकेत देता है। क्रेडेंशियल (उपयोगकर्ता नाम + पासवर्ड) शेल रीडायरेक्ट के माध्यम से /var/tmp/dialog.json पर लिखे जाते हैं - एक विश्व-लेखनीय निर्देशिका में हार्डकोडेड पथ। स्क्रिप्ट यह जाँच नहीं करती कि लिखने से पहले इस पथ के साथ छेड़छाड़ तो नहीं की गई है।
1. गैर-विशेषाधिकार प्राप्त हमलावर एक नामित पाइप (FIFO) बनाता है: mkfifo /tmp/.fifo
2. हमलावर एक सिमलिंक बनाता है: ln -s /tmp/.fifo /var/tmp/dialog.json
3. हमलावर FIFO से पढ़ता है (ब्लॉक होता है, डेटा की प्रतीक्षा करता है)
4. एडमिन चलाता है: sudo erase-install.sh --erase
5. एडमिन swiftDialog प्रॉम्प्ट में क्रेडेंशियल दर्ज करता है
6. क्रेडेंशियल सिमलिंक → FIFO → हमलावर के टर्मिनल के माध्यम से प्रवाहित होते हैं
इस हमले के लिए किसी विशेष समय या रेस कंडीशन की आवश्यकता नहीं है - हमलावर बस सिमलिंक लगाता है और प्रतीक्षा करता है।
# लिसनर प्रारंभ करें (गैर-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में)
python3 poc.py
# एडमिन द्वारा --erase या --reinstall के साथ erase-install चलाने की प्रतीक्षा करें
# कैप्चर होने पर क्रेडेंशियल stdout पर मुद्रित हो जाएंगे
# सफाई
python3 poc.py --cleanup
पूर्ण विवरण के लिए poc.py देखें।
mktemp का उपयोग करता है:- dialog_output="/var/tmp/dialog.json"
+ dialog_output=$(/usr/bin/mktemp /var/tmp/dialog.XXX.json)
| तिथि | घटना |
|---|---|
| 2025-12-23 | भेद्यता की खोज |
| 2025-12-23 | अनुरक्षक को रिपोर्ट किया गया |
| 2025-12-24 | PR #574 के माध्यम से फिक्स मर्ज किया गया |
यह प्रूफ ऑफ कॉन्सेप्ट केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए प्रदान किया गया है। जिम्मेदारी से उपयोग करें और केवल उन सिस्टम पर करें जिनके आप मालिक हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट अनुमति है।
| 2026-02-20 | CVE-2025-70342 असाइन किया गया |