
أداة كشف غير تخريبية لثغرة CVE-2026-31431 (Copy Fail) لتصعيد الامتيازات المحلية في XCP-ng 8.3 Dom0، تتحقق من ثغرة النواة عبر اختبار تلف ذاكرة التخزين المؤقت للصفحات.
سكربت كاشف آمن وغير مدمر لثغرة CVE-2026-31431 ("Copy Fail")، تم التحقق منه على XCP-ng 8.3 LTS قبل التحديث الأمني الصادر في 5 مايو 2026.
⚠️ للاستخدام المصرح به فقط. قم بتشغيل هذا السكربت حصريًا على الأنظمة التي تملكها أو التي لديك إذن صريح لاختبارها.
CVE-2026-31431، الملقبة بـ "Copy Fail"، هي ثغرة تصعيد صلاحيات محلي (LPE) في واجهة التشفير algif_aead في نواة لينكس. خلل منطقي في قالب authencesn — تم تقديمه في عام 2017 — يسمح لمستخدم محلي غير مميز بتنفيذ كتابة محكومة بحجم 4 بايت في ذاكرة التخزين المؤقت للصفحات (page cache) للنواة لأي ملف قابل للقراءة، مما يتيح تصعيد الصلاحيات إلى صلاحيات الجذر (root).
a664bf3d603d بواسطة Herbert Xuيعمل مجال التحكم Dom0 في XCP-ng على نواة لينكس وهو طبقة إدارة الهايبرفايزر. أي مستخدم غير مميز لديه وصول شل إلى Dom0 — بما في ذلك حسابات الخدمة التي تم إنشاؤها لخطوط CI/CD، وعوامل المراقبة، وأدوات النسخ الاحتياطي، أو الأتمتة — يمكنه استغلال هذه الثغرة للحصول على صلاحيات الجذر. من صلاحيات الجذر في Dom0، يتم اختراق جميع الأجهزة الافتراضية (VMs) الضيفة على ذلك المضيف.
تثبيت XCP-ng الافتراضي لديه تعرض محدود حيث أن عددًا قليلاً جدًا من العمليات تعمل كمستخدمين غير جذر. الخطر الحقيقي يتراكم بمرور الوقت عندما يضيف المشغلون حسابات خدمة لأغراض مشروعة دون تقييد وصول الشل.
دقق في حسابات خدمة Dom0 لديك:
awk -F: '$7 ~ /bash|sh/' /etc/passwd
هذا كاشف مختبر، وليس أداة تصعيد صلاحيات. يقوم بـ:
algif_aead / authencesn ضد ذلك الملفلا يتم لمس ملفات النظام الثنائية أو /etc/passwd أو أي ملفات نظام أخرى أبدًا. تلف ذاكرة التخزين المؤقت للصفحات يكون في الذاكرة فقط — لا يتم كتابة أي شيء مرة أخرى إلى القرص.
os.splice)python3 xcp_ng_cve_2026_31431_tester.py
| الرمز | المعنى |
|---|---|
0 | لا تلف ملحوظ — النظام على الأرجح مصحح أو algif_aead معطل |
1 | خطأ في التشغيل — algif_aead قد يكون غير متاح أو محظور |
2 | معرض للثغرة — تم تأكيد تلف ذاكرة التخزين المؤقت للصفحات |
ملاحظة: رمز الخروج
1على نظام مصحح هو سلوك متوقع، وليس خطأ في السكربت. إذا تم تعطيلauthencesnعلى مستوى النواة (كما في إصلاح XCP-ng في 5 مايو)، سيفشل ربط المقبس (socket bind) وسيخرج السكربت بالرمز1.
| التاريخ | الحدث |
|---|---|
| 29 أبريل 2026 | الكشف العلني عن CVE-2026-31431 |
| 4 مايو 2026 | VATES تنشر VSA-2026-013 |
| 5 مايو 2026 | إصدار التحديث الأمني لشهر مايو لـ XCP-ng 8.3 LTS — إصلاح النواة متاح |
قم بتحديث مضيفات XCP-ng وأعد التشغيل:
yum update
reboot
بعد إعادة التشغيل، تحقق من أن النواة المحدثة تعمل:
uname -r
أعد تشغيل سكربت الكشف بعد التصحيح. سيعيد النظام المصحح رمز الخروج 1 (خطأ في التشغيل) حيث لم يعد قالب authencesn المعرض للثغرة متاحًا.
ملاحظة: إصلاح XCP-ng يعطل دعم IPSec ESN كنتيجة لإزالة مكون
authencesnالمعرض للثغرة. في معظم البيئات، لا يوجد تأثير عملي لهذا الأمر. أشارت VATES إلى أن تصحيحًا مستقبليًا قد يعيد هذه الوظيفة مع إصلاح مناسب.
قبل تطبيق الإجراءات التخفيفية، تحقق مما إذا كان algif_aead مُجمّعًا كوحدة (=m) أو مدمجًا في النواة (=y):
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)
=m — قائم على الوحدات؛ قائمة الحظر في modprobe ستعمل=y — مدمج في النواة؛ قائمة الحظر في modprobe ستفشل بصمت ولن توفر أي حمايةلأنوية عائلة RHEL مع =y، استخدم معامل إقلاع grubby بدلاً من ذلك:
grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
reboot
هذا السكربت هو اشتقاق معدل من العمل الأصلي لـ rootsecdev. يرجى التحقق من ترخيص المستودع العلوي قبل إعادة التوزيع والتأكد من أن استخدامك يتوافق مع شروطه.
تم التحقق من هذا السكربت على XCP-ng 8.3 LTS الذي يعمل بنواة غير مصححة اعتبارًا من 5 مايو 2026. قم بتطبيق التحديث الأمني الرسمي من VATES فورًا إذا لم تقم بذلك بعد.