
تخفيف CVE-2025-31207 وأداة اختبار معزولة لـ iOS 17 Relaxin/rootHide
AppEnumGuard هو تعديل rootHide دفاعي للقناة الجانبية لسرد التطبيقات المثبتة المتتبعة باسم CVE-2025-31207. وهو مصمم لـ كسر الحماية Relaxin على iOS 17.0–17.3.1، باستخدام بنية rootHide الخاصة بـ Relaxin. يحتوي المستودع أيضًا على تطبيق اختبار iOS معزول (sandboxed) عادي يوضح النتيجة القابلة للاستغلال ويتحقق من التخفيف.
CVE-2025-31207 هي ثغرة كشف معلومات في منطق FrontBoard الخاص بـ Apple لتشغيل التطبيقات. يمكن لتطبيق معزول (sandboxed) إرسال معرّفات حزم عشوائية عبر دالة تشغيل خاصة في SpringBoardServices والتمييز بين التطبيقات المثبتة والتطبيقات المفقودة باستخدام أكواد إرجاع مختلفة. يمكن أن يكشف هذا معلومات خاصة حول التطبيقات التي ثبتها المستخدم، بما في ذلك التطبيقات المصرفية وتطبيقات المراسلة والأمن والتثبيت الجانبي والتطبيقات المرتبطة بكسر الحماية.
تصف Apple المشكلة بأنها مشكلة منطقية قد تسمح لأي تطبيق بسرد التطبيقات المثبتة. صحّحت Apple ذلك بفحوصات محسّنة في iOS وiPadOS 18.5. وبالتالي، تظل iOS 17.0–17.3.1 متأثرة على مستوى نظام التشغيل.
| المكوّن | الهدف المدعوم |
|---|---|
| iOS | 17.0–17.3.1 |
| كسر الحماية | Relaxin |
| بنية التمهيد/الحزمة | rootHide / iphoneos-arm64e |
| بنية الجهاز | arm64e؛ ثنائي التعديل يحتوي على شريحة arm64e فقط |
| الحزمة | ثبّت ملف .deb الخاص بـ rootHide، وليس بناءً rootless تقليديًا |
يستخدم Relaxin بنية rootHide الخاصة بالتمهيد/الحزم، لذلك تم بناء AppEnumGuard باستخدام rootHide Theos ويحتوي على مسارات محمّل rootHide .jbroot. تعلن الحزمة عن firmware (>= 17.0) وfirmware (<< 17.4)، بما يتوافق مع نطاق Relaxin المدعوم من 17.0 إلى 17.3.1.
تم التحقق من التعديل واختبار التطبيق معًا على جهاز Relaxin/rootHide حقيقي: اكتشف الاختبار التسريب عند إزالة التعديل، وعاد بنتيجة نجاح خضراء بعد تثبيت التعديل.
البدائية المنشورة تستدعي دالة SpringBoardServices الخاصة SBSLaunchApplicationWithIdentifierAndURLAndLaunchOptions. على نظام قابل للاستغلال، تُرجع أخطاء مختلفة لتطبيق مثبت وتطبيق مفقود:
9: الهدف موجود، لكن الإطلاق مرفوض حسب السياسة7: الهدف غير موجوديتم حقن التعديل في عمليات تطبيقات UIKit. بالنسبة لتطبيق عادي مثبت في الحاوية، يُرجع 7 دون إرسال طلب الإطلاق الخاص. تحتفظ Apple وعمليات النظام الأخرى خارج حاوية التطبيق بالسلوك الأصلي.
يحتوي كل إصدار على GitHub على كلٍّ من الأجزاء القابلة للتثبيت:
AppEnumGuard_1.0.0_roothide_iphoneos-arm64e.deb — تعديل rootHideAppEnumGuardTester_1.0.0_sandboxed.ipa — تطبيق تحقق معزول (sandboxed).deb الخاص بـ rootHide وأعد التشغيل (respring).النتائج المتوقعة مع تثبيت WhatsApp:
| الحالة | الهدف | المفقود | نتيجة الاختبار |
|---|---|---|---|
| تعديل غير مثبت | 9 | 7 | أحمر / فشل |
| تعديل نشط | 7 | 7 | أخضر / نجاح |
أعاد اختبار الجهاز الأصلي إنتاج الحالتين: إلغاء تثبيت التعديل أنتج النتيجة الحمراء 9 / 7، بينما تثبيته أنتج النتيجة الخضراء 7 / 7.
ثبّت rootHide Theos، ثم شغّل:
cd Tweak
THEOS=/path/to/theos-roothide \
make clean package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=roothide
يُترجم الاختبار باستخدام iPhoneOS SDK من Xcode وليس لديه صلاحيات كسر حماية أو صلاحيات مرتفعة:
./scripts/build-tester-ipa.sh
يُوضع ملف IPA الناتج في dist/. وهو موقّع بشكل مؤقت (ad-hoc) بحيث يمكن لأداة التثبيت إعادة توقيعه بهوية تطوير عادية. لا تمنحه صلاحية platform-application أو com.apple.private.security.no-sandbox، لأن الاختبار مصمم تحديدًا للعمل من حاوية تطبيق عادية.
7 / 7 ذو معنى فقط عندما يكون التطبيق الهدف مثبتًا ومعروفًا.MIT