
مؤرشف، تم نقله إلى codesource/cve-check. سكربت شل لاكتشاف التعرّض لـ CVE-2026-31431 (Copy Fail) وتدابير التخفيف على أنظمة Linux: فحص النواة، وحالة الوحدة، ومعاملات الإقلاع، وإمكانية الوصول إلى AF_ALG، وحالة الترقيع في التوزيعة.
[!IMPORTANT] هذا المستودع مؤرشف. أصبح فحص Copy Fail الآن ضمن cve-check، إلى جانب فحوصات ثغرات أخرى ووضع اختياري
--fixيطبّق المعالجة. راجع checks/CVE-2026-31431 لهذا الفحص.curl -fsSL https://raw.githubusercontent.com/codesource/cve-check/main/cve-check.sh | sudo bash -s -- CVE-2026-31431لا يزال
check_copyfail.shأدناه يعمل لكنه لم يعد يُحدَّث.
سكربتات Shell لاكتشاف ثغرات نواة Linux، والتحقق من حالة التخفيف، وإرشاد إلى المعالجة — مصممة للتشغيل محليًا أو عبر الأساطيل باستخدام SSH أو Ansible أو pssh.
Copy Fail ثغرة تصعيد امتيازات محلية (LPE) عالية الخطورة في وحدة algif_aead التشفيرية في نواة Linux. خلل منطقي أُدخل في 2017 يسمح لأي مستخدم محلي غير مميز بكتابة 4 بايتات متحكَّم بها داخل page cache لأي ملف قابل للقراءة — وهو ما يكفي للكتابة فوق ملف setuid والحصول على صلاحيات root. يوجد إثبات مفهوم (PoC) عامل بلغة Python بحجم 732 بايت ومتاح للعموم.
| CVE | CVE-2026-31431 |
| CVSS | 7.8 (عالية) |
| تاريخ الإفصاح | 29 أبريل 2026 |
| المتأثر | نوى Linux 4.13 – 6.x (2017–2026) |
| التوزيعات | Ubuntu وRHEL وSUSE وDebian وAmazon Linux ومعظم التوزيعات الأخرى |
| قابلة للاستغلال عن بُعد | لا — تتطلب وصولًا محليًا |
| التصحيح متاح | جزئيًا — راجع نشرات الأمان الخاصة بتوزيعتك |
| الفحص | هل يحتاج root؟ |
|---|---|
| إصدار النواة — ما إذا كنت ضمن النطاق المتأثر (≥ 4.13) | لا |
وحدة algif_aead — محمّلة، أو موجودة على القرص، أو محظورة | لا |
معاملات الإقلاع — وجود initcall_blacklist=algif_aead_init | لا |
| إمكانية الوصول إلى مقبس AF_ALG — ما إذا كان مسار الاستغلال مفتوحًا | لا |
| حالة SELinux | لا |
| حالة AppArmor | نعم — مخرجات جزئية فقط بدون root |
| حالة تصحيح التوزيعة — هل CVE مدرجة في سجل تغييرات النواة | لا |
لا يُشترط root لتشغيل السكربت — جميع الفحوصات عدا حالة AppArmor تعمل كمستخدم عادي. يُنصح بالتشغيل باستخدام
sudoللحصول على نتائج كاملة، وهو الخيار الأكثر أمانًا عند التمرير منcurl.
صُمم السكربت ليعمل عبر جميع توزيعات Linux الرئيسية:
| عائلة التوزيعة | فحص مدير الحزم | مسار الوحدات |
|---|---|---|
| Debian، Ubuntu | dpkg + سجل تغييرات النواة | /lib/modules/ |
| RHEL، CentOS، Amazon Linux | rpm (kernel، kernel-rt) | /lib/modules/ |
| SUSE، openSUSE | rpm (kernel-default) | /lib/modules/ |
| Arch Linux | pacman + رابط النشرة الأمنية | /usr/lib/modules/ |
| Fedora | rpm + احتياطي /usr/lib/modules/ | /usr/lib/modules/ |
يتطلب
bash— يستخدم السكربت صياغة خاصة بـ bash ولن يعمل تحتshأوashأوdash. على Alpine Linux (التي تستخدم busybox ash افتراضيًا)، ثبّت bash أولًا:apk add bash
بدون root — معظم الفحوصات تعمل:
curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh | bash
مع صلاحيات الجذر — نتائج كاملة تشمل حالة AppArmor:
curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh | sudo bash
نصيحة: ثبّت على SHA محدد لأحد الـ commits في بيئة الإنتاج حتى لا يتغيّر السكربت تحت قدميك:
curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/COMMIT_SHA/check_copyfail.sh | sudo bash
curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh -o check_copyfail.sh
less check_copyfail.sh
bash check_copyfail.sh # without root
sudo bash check_copyfail.sh # full results
حلقة SSH
for HOST in server1 server2 server3; do
echo "=== $HOST ==="
ssh "$HOST" "curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh | sudo bash"
done
Ansible
- name: Check Copy Fail vulnerability
hosts: all
tasks:
- name: Run check script
script: check_copyfail.sh
become: yes
SSH متوازي
pssh -h hosts.txt -i \
"curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh | sudo bash"
============================================================
Copy Fail CVE-2026-31431 – Vulnerability Check
============================================================
>>> Kernel Version
[INFO] Running kernel: 5.15.0-107-generic
[WARN] Kernel 5.15.0-107-generic is in the affected range (4.13 – 6.x).
>>> algif_aead Module Status
[WARN] algif_aead module is currently LOADED — system is exploitable.
[WARN] Module file found at: /lib/modules/5.15.0-107-generic/kernel/crypto/algif_aead.ko
[WARN] algif_aead is NOT blacklisted — it can be loaded on demand.
>>> Kernel Boot Parameter Mitigation
[WARN] initcall_blacklist=algif_aead_init is NOT set in boot parameters.
>>> AF_ALG Socket Reachability
[WARN] AF_ALG sockets are reachable by this user — exploit path is open.
>>> Mandatory Access Control (SELinux / AppArmor)
[WARN] Neither SELinux nor AppArmor tools detected — no MAC layer present.
>>> Distribution Patch Status
[WARN] Could not confirm CVE-2026-31431 is listed as fixed in running kernel's changelog.
============================================================
SUMMARY
============================================================
!! LIKELY VULNERABLE — No confirmed mitigation detected.
Recommended actions (in order of preference):
1. Apply your distro's kernel update as soon as available.
2. Add to /etc/modprobe.d/copyfail.conf:
blacklist algif_aead
install algif_aead /bin/true
Then run: sudo depmod -a && sudo update-initramfs -u
3. Add to kernel boot parameters (grub):
initcall_blacklist=algif_aead_init
4. Immediately unload the module if loaded:
sudo rmmod algif_aead
============================================================
طبّق هذه بالترتيب حسب الأفضلية:
1. قم بترقيع نواة نظامك (أفضل حل)
# Debian / Ubuntu
sudo apt update && sudo apt upgrade linux-image-$(uname -r)
# RHEL / CentOS / Amazon Linux
sudo yum update kernel
# SUSE
sudo zypper update kernel-default
2. أضف الوحدة إلى القائمة السوداء (فوري، دائم)
sudo tee /etc/modprobe.d/copyfail.conf << 'EOF'
blacklist algif_aead
install algif_aead /bin/true
EOF
sudo depmod -a
# Debian/Ubuntu
sudo update-initramfs -u
# RHEL/Fedora
sudo dracut -f
3. أفرغ الوحدة الآن (فوري، غير مستمر عبر عمليات إعادة التشغيل)
sudo rmmod algif_aead
4. معامل إقلاع النواة (بديل عن القائمة السوداء)
أضف initcall_blacklist=algif_aead_init إلى إعدادات GRUB ثم أعد التشغيل.
MIT — استخدمه بحرية، دون أي ضمان ضمني. راجع السكربتات دائمًا قبل تشغيلها بصلاحيات الجذر.