
مجموعة أدوات تصعيد امتيازات لينكس متعددة البنيات، تضم 24 استغلالًا مبنية مسبقًا وقابلة للترجمة البرمجية وقت التشغيل. تكتشف تلقائيًا إصدار النواة، وتفلتر الاستغلالات المُصحَّحة، وتجرب كلًا منها حتى الوصول إلى صلاحيات الجذر (root).
مجموعة أدوات لتصعيد الامتيازات متعددة البنى، تضم 24 استغلالًا (amd64 مُجمَّع مسبقًا؛ البنى الأخرى تُجمَّع عبر gcc وقت التشغيل). تدعم amd64 وarm64 و386 وmips وmipsle وmips64 وmips64le. تكتشف إصدار النواة، وتستبعد الاستغلالات التي تم تصحيحها، وتجرّب كل استغلال على التوالي حتى الحصول على صلاحيات root.
# run directly (no gcc needed on target if pre-compiled binaries are embedded)
./lpe-toolkit
# dry-run: show exploit plan without executing
./lpe-toolkit --dry-run
# skip specific exploits
./lpe-toolkit --skip "dirtyfrag,dirtypipe"
# execute a command once root is achieved and show its output
./lpe-toolkit -c "id"
# silent automation: suppress all output except the command result
./lpe-toolkit -q -c "whoami"
# verbose output (includes exploit stdout/stderr)
./lpe-toolkit -v
| Flag | الوصف |
|---|---|
--dry-run | عرض الاستغلالات المتاحة/المتخطاة |
--just-build | حل جميع الاستغلالات، وطباعة المسارات، ثم الخروج (مفيد للتغليف) |
--skip LIST | أسماء استغلالات مفصولة بفواصل لتخطيها |
-c, --command CMD | تنفيذ CMD بصلاحيات root بدلاً من فتح شل تفاعلية |
-q, --quiet | كتم رسائل الأداة؛ إظهار مخرجات شل root فقط أو unsuccessful in getting root |
-v, --verbose | تضمين stdout/stderr الخاصة بالاستغلال في المخرجات (حصرية مع -q) |
ملاحظة: -v و -q متنافيتان — تخرج الأداة برسالة خطأ إذا تم تحديدهما معًا.
# native build (pre-compile C exploits then embed in Go binary)
make
# cross-compile for all architectures (native arch's C exploits only)
make build-all
# run directly from source (compile exploits on target at runtime)
make run-source
# clean build artifacts
make clean
المتطلبات: Go 1.21+ وgcc ومُصرّفات cross لكل بنى الأهداف:
aarch64-linux-gnu-gcci686-linux-gnu-gccmips-linux-gnu-gccmipsel-linux-gnu-gccmips64-linux-gnuabi64-gccmips64el-linux-gnuabi64-gccيؤدي العلم --just-build إلى حل جميع الاستغلالات القابلة للاستخدام وطباعة مساراتها. استخدمه للتحقق مما سيكون متاحًا وقت التشغيل.
يتضمن أرشيف الثنائيات المُجمَّعة مسبقًا لكل إصدار ثنائي Go مرتبطًا بشكل ثابت (statically linked) مع استغلالات C مدمجة. جميع الاستغلالات مُجمَّعة مسبقًا لجميع البنى.
toolkit.go: تعريفات الاستغلال الأساسية، تحليل إصدار النواة، حل مسارات الثنائيات، معالج استغلال sudo عبر GTFOBins، وexecCommandAsRoot() لتنفيذ الأوامر غير التفاعلية، وأدوات المساعدة للتفصيل msg()/say()main.go: نقطة دخول واجهة الأوامر مع العلامات (-c, -q, -v, --skip, --dry-run, --just-build) ومعالجة الإشاراتbuild-exploits.sh: سكربت الترجمة المتقاطعة لاستغلالات Cexploits/: ملفات مصدر C وثنائيات مُجمَّعة مسبقًا مدمجة عبر //go:embedcve_2026_41651.c: أُضيف Pack2TheRoot — عميل D-Bus خام (بدون libdbus) يستغل السباق على علامتي InstallFiles SIMULATE/NONE في PackageKit لتشغيل postinst بصلاحيات root، ويضع bash بصلاحية setuid-root في /var/tmp/.suid_bash
تم إصلاح parseKernelVersion: أُضيف parseIntPrefix للتعامل مع لاحقات -rcN عند مقارنة إصدارات النواة
أُعيدت كتابة bad_epoll.c وفق معمارية J-jaeyoung الصحيحة: زوجان من epoll، توسيع IRQ عبر timerfd باستخدام أكثر من 3000 مُنتظِر، تنبؤ بعمق 3 (depth-3 oracle)، وذرّيات acquire/release على المتغيرات المشتركة
جميع الاستغلالات (بما فيها المكتفية بالتسريب أو إثبات المفهوم) تفتح الآن شل root أو تنفذ الأمر المطلوب
cve_2026_46333.c: أُضيفت try_passwd_root() — تسرق واصف /etc/shadow القابل للكتابة من passwd، وتكتب تجزئة كلمة مرور معروفة، ثم تفتح su -؛ وتتراجع إلى طرق التسريب فقط عند الفشل
cve_2025_38352.c: أُضيف استبدال /etc/passwd بأسلوب dirtypipe عبر → → يفتح
OFF_* وPIVOT* وفق نواتك. يتطلب /proc/kallsyms (kptr_restrict=0). شغّله على نواة غير مُصححة — الإصلاح (الالتزام a6dc643c6931، الذي يضيف ep_clear_and_put) نُقل إلى توزيعات عديدة بما فيها نواة 6.8 HWE في أوبونتو 22.04.| # | الاسم | الهدف | النوع |
|---|
| 1 | Copy Fail CVE-2026-31431 | كتابة في page-cache عبر splice مع AF_ALG | مُجمَّع مسبقًا / يُجمَّع |
| 2 | Dirty Frag CVE-2026-43284 | كتابة في page-cache عبر xfrm-ESP/RxRPC | مُجمَّع مسبقًا / يُجمَّع |
| 3 | Fragnesia CVE-2026-46300 | إفساد page-cache عبر espintcp splice | مُجمَّع مسبقًا / يُجمَّع |
| 4 | DirtyDecrypt CVE-2026-31635 | كتابة في page-cache عبر rxgk | مُجمَّع مسبقًا / يُجمَّع |
| 5 | Fragnesia v2 | دمج GRO عبر skb_segment | مُجمَّع مسبقًا / يُجمَّع |
| 6 | PinTheft | استبدال page-cache عبر RDS zerocopy و io_uring | مُجمَّع مسبقًا / يُجمَّع |
| 7 | Dirty Pipe CVE-2022-0847 | استبدال page-cache لـ /etc/passwd | مُجمَّع مسبقًا / يُجمَّع |
| 8 | CIFSwitch CVE-2026-46243 | خلط مساحات الأسماء عبر cifs.spnego + NSS | مُجمَّع مسبقًا / يُجمَّع |
| 9 | PwnKit CVE-2021-4034 | الهروب من بيئة pkexec | مُجمَّع مسبقًا / يُجمَّع |
| 10 | OverlayFS CVE-2021-3493 | الهروب من التركيب عبر مساحة اسم المستخدم | مُجمَّع مسبقًا / يُجمَّع |
| 11 | OvFS+FUSE CVE-2023-0386 | الهروب عبر تركيب FUSE | مُجمَّع مسبقًا / يُجمَّع |
| 12 | Pack2TheRoot CVE-2026-41651 | سباق PackageKit عبر D-Bus → root بصلاحية setuid | مُجمَّع مسبقًا / يُجمَّع |
| 13 | Polkit D-Bus CVE-2021-3560 | سباق accounts-daemon | مُجمَّع مسبقًا / يُجمَّع |
| 14 | Docker Socket | ملف /var/run/docker.sock قابل للكتابة | مُجمَّع مسبقًا / يُجمَّع |
| 15 | netfilter OOB CVE-2021-22555 | إفساد ip_tables | مُجمَّع مسبقًا / يُجمَّع |
| 16 | nft UAF2 CVE-2022-2586 | استخدام بعد تحرير (UAF) في سلسلة nftables | مُجمَّع مسبقًا / يُجمَّع |
| 17 | pidfd race CVE-2026-46333 | سرقة واصفات ssh-keysign/shadow | مُجمَّع مسبقًا / يُجمَّع |
| 18 | CPU Timer Race CVE-2025-38352 | سباق مؤقّت POSIX (إثبات مفهوم) | مُجمَّع مسبقًا / يُجمَّع |
| 19 | nft UAF CVE-2024-1086 | nftables متعدد الملفات الخاص بـ Notselwyn | مُجمَّع مسبقًا / يُجمَّع |
| 20 | PEdit COW CVE-2026-46331 | استبدال page-cache لـ su عبر tc-pedit | مُجمَّع مسبقًا / يُجمَّع |
| 21 | DirtyClone CVE-2026-43503 | استبدال /etc/passwd عبر ESP-in-UDP TEE | مُجمَّع مسبقًا / يُجمَّع |
| 22 | Bad Epoll CVE-2026-46242 | سباق الإغلاق مقابل الإغلاق مع UAF في epoll | مُجمَّع مسبقًا / يُجمَّع |
| 23 | FUSE OOB CVE-2026-31694 | قراءة خارج الحدود (OOB) في cache لوظيفة readdir في FUSE → /etc/passwd | مُجمَّع مسبقًا / يُجمَّع |
| 24 | GTFOBins | أكثر من 80 تقنية sudo بدون كلمة مرور | go-handler |
splice()root::0:0:su -وضع الأوامر: تستخدم استغلالات page-cache --corrupt-only لتخطي جسر PTY التفاعلي؛ execCommandAsRoot() يمرر الأمر إلى مدخلات su القياسية لتنفيذ غير تفاعلي موثوق