
إثبات مفهوم (PoC) لسكربت يوضح تجاوز فحوصات Gatekeeper و notarization و XProtect في macOS عبر استغلال CVE-2021-30853، مما يسمح بتنفيذ حمولات شل عشوائية دون مطالبات من المستخدم.
نص POC بسيط لاختبار CVE-2021-30657 الذي يؤثر على نظام MacOS.
تسمح هذه الثغرة بتجاوز فحوصات Gatekeeper وNotarization وXProtect.
تحدث هذه الثغرة عندما لا تقوم بتعريف مُفسِّر (أو تحدد مُفسِّرًا يكون هو نفسه سكربت شل) في السطر الأول (shebang) من السكربت الرئيسي لحزمة التطبيق القابلة للتنفيذ. يؤدي هذا إلى قيام xpcproxy باستدعاء posix_spawnp لتشغيل التطبيق المبني على السكربت بدون مُفسِّر. يحدث خطأ في البداية (لا يوجد مُفسِّر ← ENOEXEC)، ولكن بعد ذلك "يتعافى" posix_spawnp ويعيد تنفيذ السكربت... هذه المرة مباشرة عبر /bin/sh.
لاحقًا، يعترض kext الخاص بـ AppleSystemPolicy إطلاق العملية للتأكد من مطابقتها للمعايير (موقعة، موثقة، إلخ). لكنه يفحص /bin/sh دون تعيين أي متغير، لذلك يتم تنفيذ السكربت دون أي فحوصات افتراضية.
استنادًا إلى التغريدة: https://twitter.com/objective_see/status/1473741597368098819
macOS Big Sur < 11.6