
إثبات مفهوم لـ CVE-2026-43494 (PinTheft): تصعيد صلاحيات محلي (LPE) على Linux عبر خطأ refcount في zerocopy لـ RDS + المخازن المؤقتة الثابتة (fixed buffers) لـ io_uring ← الكتابة فوق page-cache لملفات SUID. للبحث المصرح به فقط.
إثبات المفهوم — uid=1000(raken) → uid=0(root) بعد تشغيل ./sley على WSL2 (6.6.87.2-microsoft-standard-WSL2)
إثبات مفهوم بملف واحد لـ CVE-2026-43494 (PinTheft): تصعيد صلاحيات محلي في نواة لينكس يدمج خلل عدّاد المراجع في RDS zerocopy مع المخازن المؤقتة الثابتة في io_uring لاستبدال ذاكرة التخزين المؤقت للصفحات (page cache) لملف ثنائي بصلاحيات SUID-root.
إخلاء مسؤولية: هذا المستودع مخصّص للبحث الأمني المصرّح به والتعليم والاختبارات الدفاعية فقط. تشغيله على أنظمة لا تملكها أو لا تملك إذنًا صريحًا لاختبارها أمر غير قانوني وغير أخلاقي. لا يتحمّل المؤلفون أي مسؤولية عن سوء الاستخدام.
نُشر البحث العام الأصلي وإثبات المفهوم بواسطة فريق V12 Security (Aaron Esau). SLEY هو إعادة تنفيذ مستقلة ومدمجة بواجهة طرفية منسّقة للاستخدام في المختبرات ولأغراض التعلّم.
flowchart LR
A[mmap anonymous page] --> B[io_uring: register fixed buffer]
B --> C[Clone buffer table to 2nd ring]
C --> D[1024× failing RDS zerocopy sends]
D --> E[Drain FOLL_PIN bias / steal refs]
E --> F[munmap → page freed]
F --> G[SUID binary page reclaimed in page cache]
G --> H[Stale io_uring ptr writes ELF stub]
H --> I[exec SUID → root shell]
su، mount، passwd، …).FOLL_PIN ≈ 1024).execve على الملف الثنائي SUID يشغّل الشيفرة المحقونة بصلاحيات root.CONFIG_RDS=y و CONFIG_RDS_TCP=yCONFIG_IO_URING=y و kernel.io_uring_disabled = 0rds / rds_tcp (أو قابلتين للتحميل التلقائي من قبل المستخدمين غير المميزين)IORING_REGISTER_CLONE_BUFFERS المستخدمة في السلسلة العامةsudo apt install build-essential linux-libc-dev # Debian/Ubuntu
# or equivalent headers package on your distro
# Patched? (example — adjust for your distro)
uname -r
grep -r CVE-2026-43494 /usr/share/doc/linux* 2>/dev/null || true
# RDS available?
grep CONFIG_RDS /boot/config-$(uname -r) 2>/dev/null
lsmod | grep -E '^rds'
# io_uring enabled?
cat /proc/sys/kernel/io_uring_disabled # expect 0
gcc -O2 -Wall -Wextra -o sley sley.c
الربط الثابت (اختياري، للصور المختبرية المصغّرة):
gcc -O2 -static -o sley sley.c
./sley
جميع مخرجات الحالة تذهب إلى stderr (واجهة ANSI بـ 256 لونًا، شريط تقدم، تسجيل مرحلي). تأكد من أن طرفيتك تدعم UTF-8 والألوان الحقيقية/256 لونًا لواجهة رسم الصناديق.
أمثلة على المراحل:
PHASE 1 │ Reconnaissance
PHASE 2 │ Memory & io_uring setup
PHASE 3 │ Pin reference theft (RDS zerocopy)
PHASE 4 │ Page cache overwrite & privesc
في الإعدادات التي تم استغلالها بنجاح، تكتمل السلسلة وتنتقل إلى الملف الثنائي SUID المكتشف مع استبدال صفحته الأولى — مما يمنح شلّة root إذا توافقت ظروف السباق (race) وحالة النواة.
أما على الأنوية المصحّحة، أو الأنظمة المحصّنة، أو عند غياب RDS/io_uring، فسيفشل إثبات المفهوم مبكرًا (لا يوجد هدف SUID، أخطاء mmap/io_uring/socket، إلخ).
قد تُصدر النشرات الأمنية الخاصة بالتوزيعات تصحيحات مرجّعة (backported patches) — تابع قائمة أمان النواة لدى مورّدك.
.
├── README.md # This file
├── proof-of-concept.jpg # Screenshot: successful LPE (uid 1000 → root)
├── sley.c # Single-file PoC + terminal UI
└── .gitignore
هذا البرنامج مقدَّم كما هو لأغراض البحث والتعليم. أنت مسؤول عن الامتثال للقوانين المعمول بها والحصول على إذن كتابي قبل اختبار أي نظام لا تملكه.
MIT — راجع ملف الترخيص في المستودع إن وُجد. استخدمه بمسؤولية.
| البند | التفاصيل |
|---|
| CVE | CVE-2026-43494 |
| الاسم العام | PinTheft |
| المكوّن | net/rds — مسار الإرسال zerocopy (rds_message_zcopy_from_user) |
| البدائية | استدعاء مزدوج لـ put_page() عند فشل تثبيت الصفحة → سرقة مراجع FOLL_PIN |
| التسليح | مخزن io_uring ثابت + فشل RDS zerocopy → كتابة UAF في page cache |
| التأثير | صلاحية root محليًا على الإعدادات القابلة للاستغلال |
| الإصلاح الرسمي | e17492979319 |
| الإجراء | ملاحظات |
|---|
| تصحيح النواة | طبّق الإصلاح المستقر الذي يتضمن الالتزام e17492979319 |
| تعطيل RDS | modprobe -r rds_tcp rds (وامنع التحميل التلقائي) إذا لم تكن هناك حاجة إليه |
| تقييد io_uring | kernel.io_uring_disabled=1 أو 2 عبر sysctl |
| تقليل الامتيازات | أزل ملفات SUID الثنائية غير الضرورية؛ واستخدم حاويات بملفات تعريف محصّنة |
| المراقبة | نبّه عند حدوث دفعات من إخفاقات RDS zerocopy وأنماط تسجيل المخازن المؤقتة في io_uring |