
CVE-2019-2215 — تصعيد الامتيازات عبر use-after-free في Android Binder الوصف
استغلال لثغرة CVE-2019-2215 — use-after-free في مشغّل binder بنواة أندرويد. يسمح برفع الامتيازات إلى root على الأجهزة القابلة للاستغلال. الثغرة
CVE-2019-2215 — use-after-free في binder_thread عند التعامل مع epoll. يحدث الخطأ بسبب معالجة غير صحيحة لقائمة الانتظار (wait-queue) في binder_poll()، مما يؤدي إلى إمكانية الكتابة فوق ذاكرة النواة.
مبدأ العمل
تسريب المؤشر (leakTaskStruct)
سباق بين epoll وbinder يؤدي إلى قراءة مؤشر إلى task_struct للعملية الحالية عبر writev/pipe.
الكتابة فوق addr_limit (clobberAddrLimit)
يُستخدم نفس السباق لكتابة 0xFFFFFFFFFFFFFFFE في الحقل addr_limit من بنية task_struct، مما يفتح الوصول إلى كامل ذاكرة النواة.
تصحيح cred (patchCred)
عبر قناة pipe (kernel_fd) تتم قراءة البنية cred للعملية الحالية والكتابة فوقها:
UID/GID = 0 (root)
صلاحيات كاملة (CAP_FULL_SET)
تعطيل SELinux (disableSELinuxEnforcing)
عبر nsproxy يُحسب العنوان الأساسي للنواة، ويُصفَّر العلم selinux_enforcing.
تشغيل قشرة بصلاحيات root: system("/bin/sh")
المتطلبات
جهاز يعمل بنسخة أندرويد قابلة للاستغلال (قبل تصحيح أكتوبر 2019)
معمارية ARM64
وجود /dev/binder
عند الترجمة يلزم تحديد رموز النواة:
init_nsproxy — لحساب قاعدة النواة
selinux_enforcing — لتعطيل SELinux
يمكن الحصول على الرموز من /proc/kallsyms على النظام المستهدف.