
تصعيد الامتيازات في BlueStacks عبر اختراق الآلة الافتراضية من الخلف
معرف CVE: CVE-2024-33352
معرف استشارة Bluestacks: معلق
اسم المنتج (المنتجات) المتأثرة والإصدار (الإصدارات): BlueStacks لنظام ويندوز (الإصدارات الأقدم من 10.40.1000.502)
نوع الثغرة: CWE-552: ملفات أو أدلة يمكن الوصول إليها من قبل أطراف خارجية
ملخص
BlueStacks هو محاكي أندرويد يقوم بتشغيل نظام أندرويد الضيف داخل آلة افتراضية. نظرًا لأن BlueStacks يخزن ملفات تكوين الآلة الافتراضية في دليل قابل للكتابة عالميًا ويشاركها عبر مستخدمي نظام التشغيل المختلفين، فمن الممكن لمستخدم غير مميز أن يزرع بابًا خلفيًا في صورة افتراضية تمنحه قدرات تنفيذ كود لمستخدم مميز.
وصف
يتم تخزين تكوين BlueStacks عالميًا في دليل ProgramData مع قوائم التحكم بالوصول (ACLs) التالية
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
BUILTIN\Administrators:(I)(OI)(CI)(F)
CREATOR OWNER:(I)(OI)(CI)(IO)(F)
BUILTIN\Users:(I)(OI)(CI)(RX)
BUILTIN\Users:(I)(CI)(WD,AD,WEA,WA)
Successfully processed 1 files; Failed processing 0 files
يعني الإذن (F) الممنوح للجميع (Everyone) أن جميع المستخدمين يمكنهم الوصول الكامل إلى المحتويات وتعديلها. وهذا يسمح بتعديل كل من الأقراص الافتراضية (التخزين المستخدم من قبل المحاكيات) وملفات تكوين Virtual Box الخاصة بها. تحرير الأول يتيح للمهاجم فرصة إضافة كود يتم تنفيذه تلقائيًا في الآلة الافتراضية الأساسية، مما ينشئ بابًا خلفيًا سيعمل كلما بدأ مستخدم شرعي تشغيل المحاكي. تحرير الأخير يسمح بإعادة تكوين إعدادات الدليل المشترك لتشمل محرك الأقراص C بالكامل، مما يسمح للكود بالهروب من Virtual Box إلى نظام التشغيل المضيف.
لتمكين الهروب من الآلة الافتراضية، يقوم المهاجم بتعديل الملف
C:\ProgramData\BlueStacks_nxt\Engine\Nougat32\Nougat32.bstk (أو ملف مشابه للآلة الافتراضية المحددة المستخدمة من قبل إصدار Bluestacks الخاص بالضحية؛ يمكن لإصدارات Bluestacks المختلفة استخدام أجهزة أندرويد افتراضية أخرى)
وتعديله لتغيير السطر
<SharedFolder name="BstSharedFolder" hostPath="C:\ProgramData\BlueStacks_nxt\Engine\UserData\SharedFolder" writable="true" autoMount="false"/>
إلى
<SharedFolder name="BstSharedFolder" hostPath="C:\" writable="true" autoMount="false"/>
مما سيتيح الوصول الكامل إلى نظام ملفات ويندوز (مع قيود تعتمد على مستوى وصول المستخدم الذي يشغل BlueStacks) من خلال /mnt/windows/BstSharedFolder.
بعد تكوين المجلدات المشتركة لتمكين الهروب من الآلة الافتراضية، يحتاج المهاجم إلى تعديل نظام ملفات القرص الافتراضي لإضافة كود سيتم تنفيذه عند تشغيله من قبل المستخدم المميز. هناك طرق متعددة لفعل ذلك، ولكن أكثرها مباشرة كما هو موضح في إثبات المفهوم (PoC) هو تثبيت تطبيق يبدأ تلقائيًا باستخدام مستقبل البث BOOT_COMPLETED.
الخطوة الأخيرة من الاستغلال هي تنفيذ الهروب. مع الوصول إلى نظام ملفات نظام التشغيل المضيف، يمكن تحقيق ذلك بإضافة ملف قابل للتنفيذ إلى مجلد بدء التشغيل (Startup) للمستخدم الحالي: AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup. وبينما لا يعرف التطبيق من هو المستخدم الحالي، يمكنه ببساطة تعداد المجلدات الفرعية في C:\Users ومحاولة الكتابة في جميعها.
إعادة الإنتاج
العلاج
تثبيت إصدار أحدث من BlueStacks.