
استغلال لثغرة /dev/exynos-mem التي ظهرت في هواتف سامسونج الأقدم.
هذه هي نسخة إثبات المفهوم (POC) لاستغلال الثغرة /dev/exynos-mem التي تم تقديمها في هواتف سامسونج القديمة. تم ذلك بدافع الاهتمام بأبحاث ثغرات النواة وكجزء من تحدي CTF.
الثغرة التي تم تقديمها في هذه الهواتف هي الأذونات الخاصة بجهاز exynos-mem. لقد سمحت للمستخدمين بالقراءة والكتابة (R/W)، حتى بدون صلاحيات الجذر! جهاز exynos-mem هو جهاز يسمح لك بالقراءة/الكتابة مباشرة على /dev/mem، مما يعني أنه يمكنك الكتابة مباشرة على كود النواة/البيانات.
من خلال استخدام /proc/iomem يمكنك معرفة أي العناوين الفيزيائية تتوافق مع أي ذاكرة على نظام التشغيل، وحتى معرفة مكان ذاكرة كود النواة / البيانات.
يقوم هذا الاستغلال بعدة خطوات للحصول على صلاحيات الجذر من هذا:
/proc/kallsyms، مما يعيقنا. لذلك، نقوم بمسح ذاكرة النواة للعثور على سلسلة التنسيق المستخدمة في kallsyms (seq_printf(m, "%pK %c %s\n", (void *)iter->value, iter->type, iter->name);) وتعديلها لتصبح %p بدلاً من %pK من أجل الحصول على عناوين الرموز المطبوعة لنا كمستخدمين./proc/kallsyms للعثور على عنوان الرمز nsown_capable، الذي يُستخدم لتحديد ما إذا كان المستخدم الذي يقوم باستدعاء setuid() لديه الصلاحيات للقيام بذلك أم لا.nsown_capable ببساطة بـ return true;، مما يسمح لأي مستخدم باستدعاء setuid() لأي uid يريده.setuid(0) و system(/bin/sh).قد تحتاج الثوابت في الملف إلى تغيير طفيف لتكون صحيحة لنظامك؛ قم بتعيينها حسب الحاجة.