
يكتشف ويخفف من ثغرة CVE-2026-31431 (فشل النسخ) على لينكس من خلال فحص ثغرة AF_ALG وخيارياً إدراج الوحدة المتأثرة في القائمة السوداء.
اكتشاف (وتخفيف اختياري) لثغرة CVE-2026-31431 ("Copy Fail") على مضيف Linux.
الثغرة هي بدائية كتابة في ذاكرة التخزين المؤقت للصفحات يمكن الوصول إليها عبر عائلة مآخذ AF_ALG باستخدام تحويل AEAD authencesn(hmac(sha256),cbc(aes)). يعيد هذا السكربت إنتاج نفس البدائية التي عرضتها Theori، لكنه يستهدف ملفًا مؤقتًا ذاتي الإنشاء بدلاً من ثنائي setuid، لذا فإن الاختبار نفسه غير مدمر.
إذا كانت النواة معرضة للثغرة، يعرض السكربت تطبيق تخفيف: حظر algif_aead عبر /etc/modprobe.d/disable-algif-aead.conf وإلغاء تحميل الوحدة. لا يزال تحديث النواة مطلوبًا لإصلاح كامل.
os.splice)uv لتشغيل السكربت بإصدار Python محددsudo / root — مطلوب لتطبيق التخفيف (الكتابة إلى و)؛ يعمل الاكتشاف وحده بدون صلاحيات، لكن السكربت يسأل تفاعليًا عما إذا كان سيتم التصحيح/etc/modprobe.drmmodsudo $(which uv) run --python 3.10 /path/to/copy_fail_test.py
يُستخدم $(which uv) حتى يحتفظ sudo بثنائي uv الصحيح على PATH.
سينفذ السكربت ما يلي:
AF_ALG + authencesn(hmac(sha256),cbc(aes)) قابلًا للوصول.✅ NOT VULNERABLE — خروج 0🚨 VULNERABLE — يطالب بتطبيق التخفيف، ثم يعيد الاختبار⚠️ INCONCLUSIVE — خروج 2 (مثلًا، فشل استدعاء splice/sendmsg بخطأ)إذا قبلت الطلب، سينفذ السكربت ما يلي:
install algif_aead /bin/false إلى /etc/modprobe.d/disable-algif-aead.conf.rmmod algif_aead.إذا كانت الوحدة مدمجة في النواة (غير قابلة للتحميل)، يلزم إعادة تشغيل لتفعيل الحظر. في كلتا الحالتين، قم بتصحيح النواة عند توفر تحديث — الحظر يزيل نقطة دخول واحدة فقط.
المكافئ اليدوي:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null
خطوة الاكتشاف تكتب إلى tempfile.NamedTemporaryFile تنشئه ثم تحذفه؛ لا يتم لمس أي ملفات نظام. خطوة التخفيف هي الجزء الوحيد الذي يعدل المضيف، وفقط إذا أكدت عند الطلب.