
إثبات المفهوم للاستغلال والتحليل الفني لـ CVE-2022-32832، وهي حالة سباق في نواة Apple APFS على macOS تتيح تصعيد الامتيازات.
CVE-2022-32832 هي ثغرة في الطريقة الخارجية AppleAPFSUserClient::methodDeltaCreateFinalize (المحدِّد 49). إليك الكود بعد فك التجميع قبل التصحيح:
__int64 __cdecl AppleAPFSUserClient::methodDeltaCreateFinalize(AppleAPFSUserClient *this, void *a2, IOExternalMethodArguments *args)
{
void *ctx;
__int64 result;
ctx = this->deltaCreateCtx;
if ( !ctx )
return 0xE00002D8LL;
AppleAPFSContainer::deltaCreateTeardown(ctx);
result = 0LL;
this->deltaCreateCtx = 0LL;
return result;
}
لا تستخدم AppleAPFSUserClient::externalMethod أي تقنيات تزامن لترتيب استدعاءات الطرق الخارجية. وهذا يعني أنه من الممكن للمهاجم تحرير delta_create_ctx_t والخصائص المرتبطة بها مرتين عن طريق سباق استدعاءين لـ AppleAPFSUserClient::methodDeltaCreateFinalize على نفس المستخدم العميل، حيث سيتمكن كلاهما من استدعاء (الطريقة المسؤولة عن تحرير ) قبل تعيين إلى .
AppleAPFSContainer::deltaCreateTeardowndelta_create_ctx_tthis->deltaCreateCtxNULLلتفعيل ذلك، يحتاج المهاجم أولاً إلى إنشاء "سياق إنشاء دلتا" على المستخدم العميل باستخدام الطريقة الخارجية AppleAPFSUserClient::methodDeltaCreatePrepare (المحدد 36). وهذا يتطلب وجود وحدة تخزين غير مثبتة لتعمل، لذا فإن سير الاستغلال العادي يتطلب من المهاجم أيضاً إنشاء وحدة تخزين مستهدفة باستخدام الطريقة الخارجية AppleAPFSUserClient::methodVolumeCreate، والتي تتطلب صلاحيات المستخدم المتميز. لهذا السبب، وصفت Apple تأثير الثغرة على النحو التالي:
قد يتمكن تطبيق بصلاحيات root من تنفيذ كود تعسفي بصلاحيات kernel
يحتوي هذا المستودع على استغلال إثبات المفهوم لهذه المشكلة والذي يسبب ذعر kernel على إصدارات macOS الضعيفة عن طريق إحداث underflow في عداد مرجع كائن kernel. يجب تنفيذ هذا الاستغلال كـ root للأسباب المذكورة أعلاه.
تم تصحيح CVE-2022-32832 عن طريق إضافة استدعاءات IOLockLock و IOLockUnlock إلى AppleAPFSUserClient::methodDeltaCreateFinalize لحماية الكود الضعيف.