
نص Bash لتقييم تعرّض مضيف Linux لثغرة CVE-2026-31431، والتحقق من حالة وحدة النواة، وتطبيق التخفيف عبر حظر algif_aead، وتحديث حزم النواة.
يوثّق هذا المستودع سكربت Bash يُستخدم لتقييم التعرض لثغرة CVE-2026-31431 على أنظمة Linux، مع التركيز على Ubuntu، ولتطبيق تخفيف بسيط عن طريق حظر وحدة algif_aead.
إصدارات اللغات:
README.mdREADME.pt-BR.mdيدعم السكربت ثلاثة أوضاع:
--check: جمع معلومات المضيف وتصنيف الحالة الحالية.--mitigate: إنشاء قاعدة modprobe لحظر الوحدة المعرضة للخطر ومحاولة إلغاء تحميلها.--update: تشغيل ترقيات حزم النواة عبر apt.CVE-2026-31431، المشار إليها علنًا باسم Copy Fail، هي ثغرة تصعيد صلاحيات محلية في نواة Linux مرتبطة بوحدة algif_aead، التي تنفّذ واجهة AEAD الخاصة بواجهة التشفير البرمجية للنواة عبر AF_ALG.
من الناحية العملية، تسمح هذه المشكلة لمستخدم محلي منخفض الصلاحيات باستغلال خلل منطقي في مسار معالجة الذاكرة لهذا النظام الفرعي وتصعيد التأثير إلى اختراق كامل لسلامة النظام. النتيجة المنشورة من kernel.org والمنعكسة في NVD هي CVSS 7.8، مع متجه AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H، مما يعني أن الهجوم يتطلب تنفيذًا محليًا لكن له تأثير مرتفع على السرية والسلامة والتوافر.
2017، عندما تمت إضافة تحسين موضعي إلى algif_aead.22 أبريل 2026.Copy Fail ومع إثبات مفهوم عام، في 29 أبريل 2026.1 أبريل 2026، قبل الإفصاح العام الواسع للمستخدمين النهائيين.وفقًا للاستشارات الفنية المنشورة، يعتمد الخلل على مزيج من:
AF_ALG في النواةalgif_aeadsplice()النتيجة العملية هي قدرة عملية محلية على إجراء كتابة صغيرة محكومة في صفحات مدعومة بذاكرة التخزين المؤقت للصفحات من ملفات قابلة للقراءة. في الظروف المواتية، يكفي ذلك لتحويل موطئ قدم محلي محدود إلى تصعيد صلاحيات إلى root.
الخطر الحقيقي ليس مجرد "تشغيل نواة Linux معرضة للخطر"، بل السماح لرمز محلي منخفض الثقة بالوصول إلى مسار النواة هذا. في بيئات المؤسسات، يعني ذلك عادةً تعرضًا أعلى على:
إذا كان المهاجم يمتلك بالفعل شكلاً من أشكال التنفيذ المحلي، حتى بدون root، يمكن أن تصبح هذه CVE الخطوة التالية نحو اختراق المضيف. عمليًا، يوسع ذلك خطر:
algif_aeadalgif_aead جزء من واجهة التشفير البرمجية للنواة في مساحة المستخدم (AF_ALG). تسمح للتطبيقات باستخدام البدائيات التشفيرية للنواة عبر المقابس، خاصة عمليات AEAD (التشفير المصادق عليه مع البيانات المرتبطة).
هذه الوحدة عادةً ليست ضرورية لمعظم أعباء عمل الخوادم القياسية. وفقًا لإرشادات التخفيف المنشورة من CERT-EU، فإن تعطيل algif_aead كتخفيف مؤقت:
dm-crypt أو LUKSkTLSIPsec/XFRMOpenSSL أو GnuTLS أو NSS أو SSH في الاستخدام القياسيمن ناحية أخرى، قد يؤثر تعطيلها على:
afalgAF_ALG مباشرةaead أو skcipher أو hash عبر واجهة التشفير البرمجية للنواةبعبارة أخرى، بالنسبة لمعظم مضيفات الشركات، يميل حظر الوحدة إلى تأثير منخفض. في الأجهزة المخصصة أو حزم التشفير المخصصة أو مسارات البرامج المحسّنة بشدة، يجب التحقق من التأثير قبل النشر.
حظر الوحدة يقلل التعرض فورًا، لكنه يأتي مع مقايضات:
AF_ALG قد تفشل في البدء أو تفقد تسريع التشفير المدعوم من النواةبالنسبة لبيئات الإنتاج، النهج الأكثر أمانًا هو تطبيق التخفيف في نافذة صيانة خاضعة للتحكم والتحقق من التطبيقات الحرجة بعد ذلك.
حظر الوحدة هو مجرد تخفيف مؤقت. الإصلاح الدائم هو:
تدابير إضافية موصى بها:
AF_ALG باستخدام seccomp في الحاويات وخطوط الأنابيب حيثما أمكنafalg أو واجهة التشفير البرمجية للنواة صراحةًيفحص السكربت:
/etc/os-releasealgif_aeadmodprobe/var/run/reboot-required)pro fix CVE-2026-31431 --dry-run، عند توفرهابناءً على ذلك، يُرجع أحد التصنيفات التالية:
PATCHED_OR_NOT_AFFECTEDLIKELY_NOT_VULNERABLEMITIGATEDVULNERABLE_MODULE_LOADEDPOTENTIALLY_VULNERABLEUNKNOWNباختصار:
PATCHED_OR_NOT_AFFECTED.algif_aead موجودة في النواة الحالية، تميل الحالة إلى LIKELY_NOT_VULNERABLE.MITIGATED.VULNERABLE_MODULE_LOADED.POTENTIALLY_VULNERABLE.modinfomodprobelsmodawkgrephostnameunameapt-get لوضع --updatesudo عند التشغيل كمستخدم غير جذرpro اختياريًا، لإثراء التحليل على Ubuntuإذا كان ملف السكربت يُسمى check_cve_2026_31431.sh:
chmod +x check_cve_2026_31431.sh
./check_cve_2026_31431.sh --check
./check_cve_2026_31431.sh --check
مثال على المخرجات:
Host: srv-app-01
OS: Ubuntu 24.04 LTS
Kernel: 6.8.0-58-generic
CVE: CVE-2026-31431
Module exists: 1
Module loaded: 0
Module blocked: 1
Ubuntu affected: yes
Fix available: yes
Reboot required: 0
Status: MITIGATED
Reason: algif_aead exists but is blocked and not loaded
./check_cve_2026_31431.sh --check --json
مثال:
{"host":"srv-app-01","os":"Ubuntu 24.04 LTS","kernel":"6.8.0-58-generic","cve":"CVE-2026-31431","module":"algif_aead","module_exists":1,"module_loaded":0,"module_blocked":1,"ubuntu_affected":"yes","fix_available":"yes","reboot_required":0,"status":"MITIGATED","reason":"algif_aead exists but is blocked and not loaded"}
هذه المخرجات مفيدة للأتمتة وجرد الأصول وخطوط أنابيب الامتثال.
ينشئ وضع --mitigate الملف:
/etc/modprobe.d/disable-algif_aead-CVE-2026-31431.conf
بالمحتوى التالي:
install algif_aead /bin/false
blacklist algif_aead
بعد ذلك، يحاول السكربت إزالة الوحدة من الذاكرة باستخدام:
modprobe -r algif_aead
الاستخدام:
./check_cve_2026_31431.sh --mitigate
إذا لم يكن المستخدم root، سيحاول السكربت استخدام sudo.
يشغّل وضع --update:
apt-get update
apt-get install --only-upgrade -y 'linux-image-*' 'linux-modules-*' 'linux-aws*'
الاستخدام:
./check_cve_2026_31431.sh --update
يحاول هذا الوضع ترقية الحزم المتعلقة بالنواة على الأنظمة القائمة على Debian و Ubuntu. في البيئات الأخرى، قد لا تنطبق هذه الخطوة.
./check_cve_2026_31431.sh --help
المخرجات:
Usage: ./check_cve_2026_31431.sh [--check|--mitigate|--update] [--json]
ubuntu_affected و fix_available على وجود أمر pro.--update أنماط حزم موجهة لـ Ubuntu و Debian وقد لا تغطي جميع النوى المخصصة.--check لتقييم المضيف.--mitigate.--update أو طبّق التحديث الرسمي من الموزع.--check --json للتحقق من الحالة النهائية والاحتفاظ بالأدلة.من أجل وضوح النشر، يجب أن يستخدم السكربت اسمًا وصفيًا مثل:
check_cve_2026_31431.sh
تم تنظيم ونشر المواد مع الإشادة بـ SEC17.
الموقع الرسمي:
https://sec17.com