
إثبات مفهوم لاستغلال CVE-2022-46689 (MacDirtyCow)، وهي ثغرة تصعيد صلاحيات في نواة XNU لنظام macOS تستغل حالة سباق في النسخ عند الكتابة لتعديل ملفات الجذر للقراءة فقط.
مثال على CVE-2022-46689 المعروفة باسم MacDirtyCow.
MacDirtyCow هي ثغرة تصعيد امتيازات في macOS، مشابهة لثغرة Dirty COW في Linux. تكمن الثغرة في آلية النسخ عند الكتابة (COW) التي يستخدمها نواة XNU في macOS. تسمح الثغرة للمهاجم بتعديل ملفات مملوكة للجذر للقراءة فقط، مما قد يؤدي إلى حصول المهاجم على امتيازات الجذر على النظام المتأثر.
سبب الثغرة هو حالة سباق (race condition) في الطريقة التي تعالج بها نواة XNU في macOS عمليات النسخ عند الكتابة (COW) على صفحات الذاكرة. عندما يتم وضع علامة على صفحة ذاكرة على أنها للقراءة فقط، ولكن أيضًا كنسخة عند الكتابة، سيقوم النواة بإنشاء نسخة جديدة من الصفحة عند تنفيذ عملية كتابة على الصفحة. ومع ذلك، هناك نافذة زمنية صغيرة بين فحص الصفحة للقراءة فقط وإنشاء النسخة الجديدة حيث يمكن للمهاجم تعديل الصفحة في الذاكرة، متجاوزًا فعليًا قيد القراءة فقط.
هذا الكود (poc.c) يفتح ملفًا محددًا كوسيط سطر أوامر ويقوم بتعيينه في الذاكرة باستخدام mmap(). ثم يقوم بإنشاء نسخة من الملف وتعديل النسخة المعينة في الذاكرة عن طريق ملئها بالحرف 'A'. أخيرًا، يتم استبدال الملف الأصلي بالنسخة المعدلة من الملف.