
Ansible playbook لكشف ومعالجة CVE-2026-31431 (Copy Fail) - ثغرة تصعيد الامتيازات المحلية في نواة لينكس
كشف فشل النسخ ومعالجته
مجموعة أدوار ومسرحيات Ansible لاكتشاف ومعالجة CVE-2026-31431 (فشل النسخ)، وهي ثغرة حرجة لتصعيد الامتيازات محليًا في وحدة algif_aead في نواة لينكس.
🔗 GitHub: https://github.com/parmstro/cfDr
الاسم cfDr هو تلاعب لفظي على "طبيب فشل النسخ" - علاجك الموثوق لـ CVE-2026-31431.
CVE-2026-31431 (CVSS 7.8) هو خلل منطقي في واجهة مأخذ AEAD في نواة لينكس (AF_ALG) تم اكتشافه في عام 2026. تسمح الثغرة لأي مستخدم محلي غير مميز بتصعيد امتيازاته إلى صلاحيات الجذر في ثوانٍ.
algif_aead (واجهة تشفير AF_ALG)إصدارات النواة: نواة لينكس >= 4.10 (صدرت عام 2017)
التوزيعات المتأثرة:
ملاحظة: أي توزيعة لينكس بنواة 4.10 أو أحدث معرضة للخطر.
هذه الثغرة خطيرة بشكل خاص للأسباب التالية:
بمجرد حصول المهاجم على أي شكل من أشكال الوصول المحلي (SSH، قشرة ويب، هروب حاوية، إلخ)، يمكنه:
أثناء انتظار تصحيحات النواة المقدمة من الموردين، تتوفر عدة استراتيجيات تخفيف. cfDr ينفذها جميعًا، مع توصيات ذكية بناءً على تكوين نظامك.
ليست جميع المعالجات متساوية. إليك ما تحتاج معرفته:
| الطريقة | هل يمكن للجذر تجاوزها؟ | التغطية | دعم Enterprise Linux |
|---|---|---|---|
| قائمة الحظر للوحدات | ✅ نعم (عبر insmod) | يمنع تحميل modprobe | جميع الإصدارات |
| سياسة SELinux | ❌ لا (طبقة LSM) | النطاقات المكوّنة فقط | جميع الإصدارات (افتراضي) |
| seccomp في systemd | ❌ لا (مرشح استدعاءات النظام) | الخدمات المكوّنة فقط | جميع الإصدارات |
| eBPF LSM | ❌ لا (طبقة LSM) | على مستوى النظام (إذا تم تكوينه) | RHEL 9+، Fedora 34+ |
التوصية الافتراضية لـ cfDr: الخيار 3 (قائمة حظر الوحدات + SELinux)
يوفر هذا طبقتين حماية مستقلتين:``` ┌─────────────────────────────────────────────────┐ │ Layer 1: Module Blacklist │ │ • Prevents modprobe algif_aead │ │ • Persists across reboots │ │ • CAN be bypassed by malicious root (insmod) │ ├─────────────────────────────────────────────────┤ │ Layer 2: SELinux Policy │ │ • Blocks AF_ALG socket() at syscall level │ │ • Works even if module is loaded │ │ • CANNOT be bypassed from userspace │ │ • Covers user_t, unconfined_t (majority cases) │ └─────────────────────────────────────────────────┘
Result: If either layer fails, the other still protects
### لماذا لا تكفي القائمة السوداء للوحدات وحدها
يمكن للمهاجم العازم الذي يمتلك صلاحيات الجذر (root) تجاوز القائمة السوداء للوحدات:```bash
# Module blacklist DOES NOT prevent:
insmod /lib/modules/$(uname -r)/kernel/crypto/algif_aead.ko.xz
ومع ذلك، هذا مقبول للأسباب التالية:
للحصول على حماية كاملة غير قابلة للتجاوز، تحتاج إلى:
القائمة السوداء للوحدات + واحد على الأقل من:
يستخدم cfDr أعلامًا بتاتية لتمكين تخفيفات متعددة:
| قيمة العلم | التخفيفات المفعّلة | حالة الاستخدام |
|---|---|---|
| 1 | القائمة السوداء للوحدات فقط | حماية دنيا، أنظمة بدون SELinux |
| 2 | SELinux فقط | بيئات SELinux فقط |
| 3 | القائمة السوداء للوحدات + SELinux | الافتراضي الموصى به |
| 5 | القائمة السوداء للوحدات + seccomp | أنظمة غير SELinux مع تقوية الخدمات |
| 7 | القائمة السوداء للوحدات + SELinux + seccomp | حماية معززة |
| 15 | جميع التخفيفات | أقصى حماية (RHEL 9+ فقط) |
حساب الأعلام: 1 (قائمة سوداء) + 2 (SELinux) + 4 (seccomp) + 8 (eBPF) = المجموع
حماية SELinux:
user_t, unconfined_t, httpd_t, postgresql_t, mysqld_tuser_t و unconfined_t الغالبية العظمى من سيناريوهات الهجومحماية systemd seccomp:
httpd, nginx, postgresql, mariadb, redis, memcachedحماية eBPF LSM:
يجري cfDr تقييمًا شاملًا عبر أبعاد متعددة:
uname -r
- يحدد ما إذا كان إصدار النواة >= 4.10 (النطاق المعرض للخطر)
- يحدد إصدار النواة والتوزيعة
#### 2. التحقق من توفر الوحدة```bash
modinfo algif_aead
algif_aead في النواةlsmod | grep algif_aead
- يحدد ما إذا كانت الوحدة محمّلة حاليًا
- **حرج**: الوحدة المحمّلة = قابلة للاستغلال بنشاط
#### 4. كشف المقبس النشط```bash
lsof -U | grep AF_ALG
قائمة حظر الوحدات (Module Blacklist):```bash grep -E "blacklist algif_aead|install algif_aead" /etc/modprobe.d/*.conf
**سياسة SELinux**:```bash
semodule -l | grep cve_2026_31431_af_alg_deny
systemd seccomp:```bash systemctl show | grep RestrictAddressFamilies
#### 6. تحديد الحالة الفئوية
يقوم cfDr بتصنيف كل مضيف إلى إحدى هذه الحالات:
| الحالة | الشرط | الإجراء المطلوب |
|--------|-----------|-----------------|
| **قابل للاستغلال - الوحدة محمّلة** | النواة >= 4.10، الوحدة موجودة ومحمّلة | **فوري** - قابل للاستغلال بنشاط |
| **قابل للاستغلال - الوحدة موجودة** | النواة >= 4.10، الوحدة موجودة وغير محمّلة | **عالي** - يمكن تحميلها واستغلالها |
| **مخفف - الوحدة مدرجة في القائمة السوداء** | تم اكتشاف القائمة السوداء | **منخفض** - راقب، طبّق طبقات إضافية |
| **محمي - دفاع متعمق** | القائمة السوداء + SELinux/seccomp/eBPF | **لا شيء** - محمي بالكامل |
| **غير قابل للاستغلال - نواة قديمة** | النواة < 4.10 | **لا شيء** - يسبق الثغرة الأمنية |
| **غير قابل للاستغلال - لا توجد وحدة** | وحدة algif_aead غير موجودة في النواة | **لا شيء** - الوحدة غير متوفرة |
### مخرجات التقييم