
استغلال محلي عامل لتصعيد الصلاحيات لـ CVE-2026-23111، وهو use-after-free في النظام الفرعي nf_tables لنواة Linux، مع تجاوز KASLR وسلسلة ROP للنواة 6.12.x.
CVE-2026-23111_exploit
استغلال عامل لتصعيد الصلاحيات المحلية لـ CVE-2026-23111، وهو ثغرة use-after-free في
النظام الفرعي nf_tables في نواة Linux. تم اختباره على linux-6.12.69 (x86-64).
يفترض الاستغلال نواة هدف مبنية بالخيارات التالية:
| الخيار | القيمة | السبب |
|---|---|---|
CONFIG_NF_TABLES | y | النظام الفرعي المصاب |
CONFIG_USER_NS | y | تشغيل nf_tables بدون صلاحيات (user+net namespace) |
CONFIG_RANDOMIZE_BASE | y | KASLR — يتم التغلب عليه أثناء التشغيل (المرحلة 1) |
CONFIG_MEMCG | y | الكائنات تستقر في مخابئ kmalloc-cg-* (كما يفترض الـ spray) |
CONFIG_STATIC_USERMODEHELPER | n | يجب أن يكون modprobe_path قابلاً للكتابة |
SLAB_FREELIST_RANDOM / HARDENED | n | قائمة LIFO الحرة تحافظ على موثوقية الاستعادة |
الإزاحات في offsets.h خاصة ببناء نواة واحد — أعد توليدها لأي نواة أخرى
| الملف | الغرض |
|---|---|
exp.c | الاستغلال (المراحل 1 → 4). |
rootme.c | مساعد صغير ثابت setuid(0); execl("/bin/sh") يُستخدم للحصول على صدفة root. |
netlink_min.h | تعريفات Netlink مصغّرة (مبنية على musl، بدون ترويسات kernel uapi). |
offsets.h | إزاحات الرموز/الـ gadgets نسبةً إلى kbase لنواة الهدف. |
gen_offsets.sh | يعيد توليد offsets.h من System.map / vmlinux الخاص بالنواة. |
Makefile | يبني exp و rootme كملفات ELF ثابتة بـ musl. |
يتطلب musl-gcc (sudo apt install musl-tools).
make # builds exp + rootme (static ELFs)
make clean # remove built binaries
كلا الملفين التنفيذيين ثابتان بحيث يعملان داخل initramfs مصغّر بـ busybox بدون مكتبات مشتركة.
يتوقع exp وجود rootme بجانبه في /cve-2026-23111-poc/ على الهدف.
يتم توليد offsets.h من بناء محدد. لـ vmlinux مختلف:
make offsets SYSTEM_MAP=/path/to/System.map
يستخرج gen_offsets.sh الرموز (single_start، modprobe_path، init_ipc_ns، msleep،
memcpy، …) و ROP gadgets، كلها كإزاحات من قاعدة النواة. ستحتاج أيضاً إلى
إعادة التحقق من إزاحات البنية المضمّنة في exp.c (تخطيط nft_chain، nft_expr_ops.validate،
init_ipc_ns + 0x110، msg_queue.q_messages، xa_node.slots) باستخدام pahole / التفكيك إذا
كانت نواتك تختلف بشكل جوهري عن 6.12.x.
هذا الكود منشور لأغراض البحث الأمني الدفاعي والتعليم. يستهدف جهازاً افتراضياً في مختبر يشغّل نواة معروفة بأنها مصابة. لا تستخدمه ضد أنظمة لا تملكها أو غير مصرح لك باختبارها. لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام.