
نص برمجي للتخفيف دون إعادة تشغيل لثغرة نواة Copy Fail (CVE-2026-31431). يعطّل الوحدة المعرضة للخطر algif_aead ويُخرج ذاكرة التخزين المؤقت للصفحات لملفات setuid الثنائية.
أداة مساعدة بسيطة للتخفيف دون إعادة تشغيل النظام لثغرة Copy Fail / CVE-2026-31431.
يقوم هذا السكربت بتعطيل مسار الوحدة الضعيفة algif_aead ويحاول إلغاء تحميل الوحدة فورًا. كما يقوم بمحاولة إخلاء ذاكرة التخزين المؤقت للصفحات (page cache) لملف /usr/bin/su بأفضل جهد ممكن.
هذا إجراء تخفيف مؤقت، وليس إصلاحًا للنواة. قم بتثبيت نواة البائع المُصححة بمجرد توفرها.
يقوم السكربت بتنفيذ إجراء التخفيف الموصى به من الإعلان العام لثغرة Copy Fail:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
يمنع هذا الإجراء تحميل algif_aead مرة أخرى عبر modprobe ويقوم بإلغاء تحميلها من النواة قيد التشغيل إذا كان ذلك ممكنًا.
ثم يقوم بتشغيل مقتطف Python صغير يستدعي posix_fadvise() مع POSIX_FADV_DONTNEED للصفحة الأولى من /usr/bin/su:
os.posix_fadvise(fd, 0, page, os.POSIX_FADV_DONTNEED)
هذه محاولة بأفضل جهد لإخلاء الصفحة ذات الصلة من ذاكرة التخزين المؤقت للصفحات. وهي ليست بديلاً عن التصحيح ولا تضمن تنظيف كل ثنائيات setuid المستهدفة المحتملة.
/usr/bin/su؟يستهدف إثبات المفهوم العام لثغرة Copy Fail ملف /usr/bin/su افتراضيًا. لذلك يحاول هذا السكربت إسقاط الصفحة الأولى من /usr/bin/su من ذاكرة التخزين المؤقت للصفحات بعد تعطيل مسار الوحدة الضعيفة.
إذا كانت بيئتك تحتوي على استغلال مُختبر أو مشتبه به ضد ثنائي setuid آخر، فراجع السكربت وقم بتكييفه وفقًا لذلك.
راجع السكربت أولاً.
sudo ./mitigate-copy-fail.sh
تحقق من عدم تحميل الوحدة:
lsmod | grep '^algif_aead' || echo "algif_aead is not loaded"
تحقق من وجود قاعدة modprobe:
cat /etc/modprobe.d/disable-algif.conf
المخرجات المتوقعة:
install algif_aead /bin/false
حاول تحميل الوحدة يدويًا:
sudo modprobe algif_aead
يجب أن تفشل أو ترفض التحميل.
لا تقم بالتراجع إلا بعد تثبيت نواة مُصححة أو بعد قبول المخاطرة.
sudo rm -f /etc/modprobe.d/disable-algif.conf
sudo modprobe algif_aead
لا يقوم هذا السكربت بما يلي:
بالنسبة لأحمال العمل غير الموثوقة مثل الحاويات وبيئات العزل ومشغّلات CI والمضيفات متعددة المستخدمين، فكر في تحصين إضافي مثل حظر إنشاء مآخذ AF_ALG باستخدام seccomp.