
🔐 دراسة حالة كاملة لـ CVE-2026-31431 (CopyFail) — ثغرة حرجة لتصعيد الامتيازات في نواة لينكس. تتضمن تحليلًا تقنيًا، ونصوص التحقق، والتقوية، ودليل الاستجابة للحوادث. لأغراض تعليمية.
دراسة حالة كاملة — كيف تم اكتشافها، وكيف تعمل، وكيف تختبرها، وكيف تعيد إنتاجها (في بيئة آمنة)، وكيف تصلح الثغرة الحرجة التي تؤثر على جميع توزيعات لينكس تقريبًا منذ 2017.
هذا المستودع لأغراض تعليمية حصرًا. المعلومات الواردة هنا موجهة لمحترفي الأمن والباحثين وطلاب الأمن السيبراني. لا تستخدم أبدًا أي تقنية موصوفة هنا على أنظمة دون إذن صريح. قد يشكل الاستخدام غير المشروع لهذه المعلومات جريمة وفقًا للقانون رقم 12.737/2012 (قانون كارولينا ديكمان) والإطار المدني للإنترنت (القانون رقم 12.965/2014).
اكتشفت شركة الأمن Theori ثغرة CopyFail أثناء تحليل كود نواة لينكس، وتحديدًا في النظام الفرعي المسؤول عن نسخ البيانات بين مساحات الذاكرة.
مارس/2026 → باحثو Theori يحددون سلوكًا شاذًا في النواة
مارس/2026 → إفصاح مسؤول (Responsible Disclosure) لفريق أمن النواة
~بعد أسبوع واحد → التصحيح الرسمي متاح على kernel.org
مايو/2026 → نشر كود الاستغلال (PoC) علنًا
01/05/2026 → مايكروسوفت تنشر تحليلًا تقنيًا
04/05/2026 → CISA تضيفها إلى كتالوج KEV (Known Exploited Vulnerabilities)
15/05/2026 → الموعد النهائي للإصلاح في الوكالات الفيدرالية الأمريكية
تمتلك نواة لينكس إجراءات داخلية مسؤولة عن نسخ البيانات بين مناطق مختلفة من الذاكرة (userspace ↔ kernelspace). سُميت الثغرة CopyFail لأن المكوّن المتأثر يتوقف عن نسخ بيانات معينة عندما يجب عليه ذلك. يؤدي هذا إلى إتلاف هياكل بيانات حساسة داخل النواة، مما يفتح نافذة استغلال لتصعيد الصلاحيات.
تدير نواة لينكس الذاكرة في مساحتين منفصلتين:
┌─────────────────────────────────────┐
│ USERSPACE │
│ عملية المهاجم (uid=1000) │
│ → استدعاء syscall خبيث │
└────────────────┬────────────────────┘
│ syscall
▼
┌─────────────────────────────────────┐
│ KERNELSPACE │
│ إجراء نسخ البيانات │
│ → خطأ: فشل في نسخ البيانات الوصفية │
│ → إتلاف هيكل التحكم │
│ → المهاجم يتلاعب بالمؤشر │
│ → تنفيذ كود بصلاحيات root │
└─────────────────────────────────────┘
uid=0 (root)، مما يمنحه سيطرة كاملة على النظام// الإصدار الضعيف (مبسط، لأغراض تعليمية)
int kernel_copy_data(struct user_request *req) {
struct kernel_buffer kbuf;
// خطأ: ينسخ جزءًا فقط من البيانات، متجاهلًا الحقول الحرجة
// حقول الأمان (security_context) لا يتم نسخها!
memcpy(&kbuf.data, req->data, req->size);
// → kbuf.security_context يبقى غير مهيأ (قمامة ذاكرة)
process_buffer(&kbuf); // يستخدم بيانات تالفة
return 0;
}
// الإصدار المُصحح
int kernel_copy_data(struct user_request *req) {
struct kernel_buffer kbuf;
// الإصلاح: ينسخ الهيكل بأكمله، بما في ذلك حقول الأمان
if (copy_from_user(&kbuf, req, sizeof(struct kernel_buffer)))
return -EFAULT;
process_buffer(&kbuf);
return 0;
}
⚠️ أي توزيعة لينكس تعمل بنواة ≤ 7.0 صدرت منذ 2017 يحتمل أن تكون ضعيفة.
مستخدم بدون صلاحيات على خادم مشترك (مثل: بيئة استضافة، VPS) ينفذ الاستغلال ويحصل على root.
الإنترنت → [RCE عبر ثغرة ويب] → قشرة محدودة → [CopyFail] → root
وفقًا لتحليل مايكروسوفت: يمكن ربط الثغرة باستغلال يُسلَّم عبر الإنترنت (مثل: RCE في تطبيق ويب)، مما يؤدي إلى اختراق كامل للخادم.
يتم خداع مستخدم لينكس لفتح رابط أو مرفق خبيث يُفعّل الاستغلال محليًا.
يخترق جهة خبيثة حساب مطور برمجيات مفتوحة المصدر ويحقن الاستغلال في كود موزع على نطاق واسع.
خادم سحابي مخترق قد يعرض جميع الأجهزة الافتراضية والحاويات والتطبيقات وقواعد بيانات العملاء على نفس البنية التحتية للخطر.
⚠️ فقط في بيئة متحكم فيها ومعزولة — جهاز افتراضي بدون وصول إلى الشبكة الخارجية!
# الأدوات اللازمة
sudo apt install -y git build-essential libssl-dev bc flex bison
# التحقق من إصدار النواة الحالي
uname -r
# التحقق مما إذا كان ضمن النطاق الضعيف (≤ 7.0)
# مثال على إخراج ضعيف: 6.8.0-51-generic
# 1. إنشاء جهاز افتراضي معزول (موصى به: VirtualBox أو QEMU)
# استخدم ISO من Ubuntu 24.04 أو Debian Bookworm
# 2. تأكد أن الجهاز الافتراضي لا يملك وصولًا إلى الإنترنت الإنتاجي
# (استخدم شبكة host-only أو NAT معزول)
# 3. إنشاء مستخدم بدون صلاحيات لمحاكاة المهاجم
sudo adduser testuser
su - testuser
# 4. تأكد أن testuser لا يملك صلاحيات sudo
sudo whoami # يجب أن يُرجع: "testuser is not in the sudoers file"
# سكربت التحقق (لا يستغل، يتحقق فقط)
#!/bin/bash
KERNEL_VERSION=$(uname -r | cut -d. -f1,2)
MAJOR=$(echo $KERNEL_VERSION | cut -d. -f1)
MINOR=$(echo $KERNEL_VERSION | cut -d. -f2)
echo "[*] النواة المكتشفة: $(uname -r)"
if [ "$MAJOR" -lt 7 ] || ([ "$MAJOR" -eq 7 ] && [ "$MINOR" -eq 0 ]); then
echo "[!] ضعيفة على الأرجح تجاه CVE-2026-31431 (CopyFail)"
echo "[!] تحقق مما إذا تم تطبيق التصحيح من قبل مزود التوزيعة"
else
echo "[+] إصدار النواة خارج النطاق المتأثر"
fi
# التحقق مما إذا تم تطبيق التصحيح (عبر سجلات التغيير للحزمة)
apt changelog linux-image-$(uname -r) 2>/dev/null | grep -i "CVE-2026-31431" && \
echo "[+] تم العثور على تصحيح CVE-2026-31431 في سجل التغييرات" || \
echo "[?] لم يتم اكتشاف التصحيح في سجل التغييرات — تحقق يدويًا"
🔒 هذا القسم تعليمي بحت. الكود أدناه تمثيل تعليمي مبسط لمتجه الهجوم — وليس الاستغلال الحقيقي (الذي لا يُنشر هنا لأسباب أخلاقية).
#!/usr/bin/env python3
"""
CVE-2026-31431 (CopyFail) — تمثيل تعليمي
الغرض: التعليم في الأمن الهجومي/الدفاعي
لا تستخدمه على أنظمة دون إذن
"""
import ctypes
import os
import sys
def check_environment():
"""يتحقق مما إذا كنا في بيئة مختبر"""
kernel = os.uname().release
print(f"[*] النواة: {kernel}")
print(f"[*] UID الحالي: {os.getuid()}")
if os.getuid() == 0:
print("[-] نحن بالفعل root. الاستغلال غير ضروري.")
sys.exit(0)
def demonstrate_concept():
"""
عرض مفاهيمي لمتجه الهجوم:
1. تحديد syscall الضعيفة
2. بناء حمولة تُفعّل النسخ غير المكتمل
3. مراقبة إتلاف الذاكرة
4. إعادة توجيه التدفق لتصعيد الصلاحيات
في استغلال حقيقي:
- يستخدم المهاجم تقنيات مثل heap spray أو ROP chains
- يستغل النافذة بين الإتلاف واستخدام البيانات التالفة
- يستبدل بيانات اعتماد العملية (uid → 0)
"""
print("[*] المفهوم: تحفيز إجراء النسخ المعيب")
print("[*] المفهوم: مراقبة إتلاف struct kernel_buffer")
print("[*] المفهوم: إعادة توجيه تدفق التنفيذ")
print("[*] انظر: https://xint.io/blog/copy-fail-linux-distributions")
def main():
check_environment()
demonstrate_concept()
print("\n[i] للتحليل التقني الكامل، راجع:")
print(" → https://xint.io/blog/copy-fail-linux-distributions")
print(" → https://www.microsoft.com/en-us/security/blog/2026/05/01/cve-2026-31431-copy-fail-vulnerability-enables-linux-root-privilege-escalation/")
if __name__ == "__main__":
main()
# في طرفية منفصلة، راقب سجلات النواة
sudo dmesg -w | grep -E "(oops|panic|null pointer|exploit|cve)"
# راقب استدعاءات النظام
sudo strace -e trace=all -p <PID_DO_PROCESSO>
# تحقق من تغييرات UID في الوقت الفعلي
watch -n 0.5 'cat /proc/self/status | grep -E "^(Uid|Gid)"'
# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y linux-image-generic
sudo reboot
# التحقق من الإصدار بعد إعادة التشغيل
uname -r
# Red Hat / CentOS / Amazon Linux
sudo dnf update -y kernel
sudo reboot
# SUSE
sudo zypper update -t package kernel-default
sudo reboot
# فحص سجل تغييرات النواة المثبتة
apt changelog linux-image-$(uname -r) | grep CVE-2026-31431
# عبر متتبع CVE في Ubuntu
# https://ubuntu.com/security/CVE-2026-31431
# عبر قاعدة بيانات CVE في Red Hat
# https://access.redhat.com/security/cve/CVE-2026-31431
# تقييد تنفيذ ملفات SUID الثنائية (يقلل سطح الهجوم)
find / -perm -4000 -type f 2>/dev/null
# تفعيل تدقيق استدعاءات النظام المشبوهة
sudo auditctl -a always,exit -F arch=b64 -S all -k syscall_audit
# مراقبة محاولات تصعيد الصلاحيات
sudo apt install -y auditd
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes
# تفعيل حمايات النواة
# /etc/sysctl.conf — أضف:
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
kernel.perf_event_paranoid = 3
kernel.unprivileged_bpf_disabled = 1
net.core.bpf_jit_harden = 2
# التطبيق
sudo sysctl -p
# علامات الاستغلال المحتمل:
# 1. عمليات مستخدم عادي تعمل بصلاحيات root
ps aux | awk '$1 != "root" && $2 == "0"'
# 2. ملفات SUID ثنائية جديدة أُنشئت مؤخرًا
find / -perm -4000 -newer /etc/passwd -type f 2>/dev/null
# 3. إدخالات مشبوهة في /etc/passwd
grep "uid=0" /etc/passwd
# 4. سجلات نواة تحتوي رسائل إتلاف
dmesg | grep -iE "(oops|BUG:|corruption|cve)"
# 5. اتصالات شبكة غير مصرح بها
ss -tulnp | grep LISTEN
إدارة التصحيحات أمر حرج — كان التصحيح الرسمي متاحًا خلال ~أسبوع، لكن التوزيعات تستغرق وقتًا أطول للتسليم. راقب مزوديك بنشاط.
الدفاع المتعمق — تصعيد الصلاحيات المحلي وحده لا يكفي؛ يحتاج المهاجم إلى وصول أولي. تحكم في من يملك الوصول إلى النظام.
ربط الثغرات — قد تصبح CVEs المعزولة "منخفضة الخطورة" حرجة عند دمجها. قيّم المخاطر في السياق، وليس فقط عبر CVSS المعزول.
سلسلة التوريد متجه حقيقي — الكود مفتوح المصدر المستخدم على نطاق واسع قد يكون متجه هجوم. نفذ التحقق من سلامة الحزم.
Kubernetes والحاويات ليست محصنة — إذا كانت نواة المضيف ضعيفة، فإن الحاويات فوقها تتأثر أيضًا.
انسخ الهياكل الكاملة دائمًا — لا تنسخ أبدًا حقولًا فردية من هياكل التحكم في النواة دون ضمان تهيئة جميع الحقول الحرجة.
استخدم copy_from_user() بشكل صحيح — دوال النسخ في النواة لها دلالات محددة. اقرأ الوثائق قبل الاستخدام.
مراجعة كود أمنية — التغييرات في النواة تحتاج إلى مراجعة تركز على الأمن، وليس فقط الوظائف.
تحديثات النواة أولوية — ليست مجرد "صيانة روتينية". ثغرات النواة غالبًا ما تكون حرجة.
جرد الأصول أمر أساسي — لا يمكنك إصلاح ما لا تعرف أنه موجود. حافظ على جرد محدث لأنظمة لينكس وإصدارات نواتها.
خطة الاستجابة للحوادث — امتلك دليل إجراءات جاهزًا للثغرات الحرجة بمواعيد نهائية صارمة (مثل CISA KEV).
وجدت شيئًا قديمًا أو تريد إضافة سيناريو اختبار؟ افتح issue أو PR!
يرجى احترام مدونة قواعد السلوك: هذا المستودع للتعليم والدفاع — وليس للأنشطة الخبيثة.
MIT License — استخدمه للتعلم والتدريس والدفاع عن الأنظمة. أبدًا للهجوم.
"معرفة الهجوم هي الخطوة الأولى لبناء الدفاع."
⭐ إذا كانت هذه الدراسة الحالة مفيدة، اترك نجمة على المستودع!
| الحقل | التفاصيل |
|---|
| معرف CVE | CVE-2026-31431 |
| الاسم المستعار | CopyFail |
| النوع | تصعيد صلاحيات محلي (LPE) — Escalada de Privilégio |
| درجة CVSS | 8.8 (عالية) / قد تكون حرجة عند الربط مع ثغرات أخرى |
| المكوّن | نواة لينكس — آلية نسخ البيانات |
| الإصدارات | نواة لينكس ≤ 7.0 (التوزيعات منذ 2017) |
| اكتشفها | Theori (شركة أمنية) |
| أُعلن عنها في | مارس 2026 |
| التصحيح الرسمي | متاح بعد ~أسبوع واحد من الإفصاح المسؤول |
| حالة CISA | مُدرجة كمستغلة بنشاط — كتالوج KEV |
| مهلة CISA | يجب على الوكالات الفيدرالية الإصلاح بحلول 15/05/2026 |
| التوزيعة | الإصدار | الحالة |
|---|
| Red Hat Enterprise Linux | 10.1 | ✅ ضعيفة |
| Ubuntu LTS | 24.04 | ✅ ضعيفة |
| Amazon Linux | 2023 | ✅ ضعيفة |
| SUSE Linux | 16 | ✅ ضعيفة |
| Debian | أحدث مستقر | ✅ ضعيفة |
| Fedora | الأحدث | ✅ ضعيفة |
| Kubernetes (العقد) | جميعها على نواة ≤7.0 | ✅ ضعيفة |