
Bad Spin: استغلال تصعيد الامتيازات في Binder لنظام Android (CVE-2022-20421)
المؤلف: Moshe Kol
استغلال رفع الامتيازات من unstrusted_app لثغرة Binder في أندرويد (CVE-2022-20421). تم تصحيح الثغرة في نشرة أمان أندرويد لأكتوبر 2022. يعمل الاستغلال على الأجهزة التي تعمل بإصدارات النواة 5.4.x و5.10.x، ويحقق إمكانيات القراءة والكتابة الكاملة للنواة. بالنسبة لـ Google Pixel 6، يحصل أيضًا على صلاحية الجذر الكامل وتجاوز SELinux.
يمكنك العثور على المقال الكامل هنا.
libbadspin.so بكتابة make push في دليل src/. سيقوم هذا بدفع المكتبة إلى /data/local/tmp.adb shell.LD_PRELOAD=/data/local/tmp/libbadspin.so sleep 1. سيقوم هذا بتحميل المكتبة وبدء الاستغلال.libbadspin.so بكتابة make push في دليل src/. سيقوم هذا بنسخ المكتبة إلى دليل assets لتطبيق أندرويد التجريبي.app/. (قد تحتاج إلى Android Studio للقيام بذلك.)adb logcat -s BADSPINيمكنك تمرير المتغيرات التالية إلى make:
VERBOSE=1 لزيادة التفصيل.TEST_VULN=1 لاختبار الثغرة دون متابعة الاستغلال.$ make list
0: Samsung Galaxy S22, Android 12 (6/2022), kernel 5.10.81
1: Samsung Galaxy S21 Ultra, Android 12 (3/2022), kernel 5.4.129
2: Google Pixel 6, Android 12 (5/2022), kernel 5.10.66
3: Google Pixel 6, Android 13 (9/2022), kernel 5.10.107
ليس من الصعب تكييف الاستغلال ودعم جهاز جديد.
تأكد من أن جهازك الجديد يعمل بإصدار نواة 5.4.x أو 5.10.x، وأن مستوى تصحيح أمان أندرويد الخاص به أقل من أكتوبر 2022.
أضف خصائص جهازك إلى dev_config.h.
حدد اثنين من مؤشرات الدوال:
kimg_to_lm(): يحول مؤشرًا افتراضيًا لصورة النواة إلى التخطيط الخطي.find_kbase(): إيجاد عنوان قاعدة النواة من مؤشر متسرب anon_pipe_buf_ops.يمكنك استخدام الدوال المتوفرة بالفعل لهذا الغرض. (إذا كان بائعك ليس Samsung ولست متأكدًا، استخدم نفس الدوال المستخدمة لـ Pixel 6.)
قم بالتجميع والتشغيل.
إذا نجح معك، يرجى تقديم طلب سحب.