
إثبات مفهوم لاستغلال CVE-2026-31431 (Copy Fail)، وهو ثغرة رفع صلاحيات محلية (LPE) في نواة لينكس عبر تلف ذاكرة التخزين المؤقت للصفحات في algif_aead، مع إرشادات للكشف والمختبر والتخفيف.
██████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ █████╗ ██╗██╗
██╔════╝██╔═══██╗██╔══██╗╚██╗ ██╔╝ ██╔════╝██╔══██╗██║██║
██║ ██║ ██║██████╔╝ ╚████╔╝ █████╗ ███████║██║██║
██║ ██║ ██║██╔═══╝ ╚██╔╝ ██╔══╝ ██╔══██║██║██║
╚██████╗╚██████╔╝██║ ██║ ██║ ██║ ██║██║███████╗
╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝
algif_aead Page Cache Corruptionalgif_aead⚠️ الاستخدام المصرح به فقط — هذا المستودع مخصص حصريًا لمختبري الاختراق، وباحثي الأمن، والمدافعين الذين يعملون تحت تفويض قانوني. الاستخدام غير المصرح به جريمة جنائية.
Copy Fail هي ثغرة تصعيد امتيازات محلي (LPE) تم الكشف عنها في 29 أبريل 2026، وتؤثر على جميع توزيعات لينكس الرئيسية تقريبًا التي تعمل بأنوية منذ عام 2017.
مستخدم غير مميز ──► AF_ALG + splice() ──► كتابة 4 بايت في ذاكرة التخزين المؤقت للصفحات ──► الجذر (ROOT)
تنبع الثغرة من تحسين موضعي معيب تم تقديمه في عام 2017 (commit 72548b093ee3) داخل وحدة algif_aead من واجهة برمجة تطبيقات التشفير في مساحة المستخدم لنواة لينكس (AF_ALG).
AF_ALG (واجهة برمجة تطبيقات التشفير في مساحة المستخدم)
└── وحدة algif_aead
└── قالب authencesn ◄── ضعيف
└── تحسين موضعي (2017)
└── req->src == req->dst ◄── صفحات من splice() مرتبطة بقائمة تشتت قابلة للكتابة لـ dst
الخطوة 1: فتح مقبس AF_ALG AEAD
socket(AF_ALG, SOCK_SEQPACKET, 0)
الخطوة 2: إرسال صفحات splice() تشير إلى الملف الهدف
(صفحات ذاكرة التخزين المؤقت لملف مميز، مثل /usr/bin/sudo)
الخطوة 3: تشغيل الكتابة الخدشية authencesn
يستخدم authencesn مخزن dst المؤقت كلوحة خدش →
يكتب 4 بايت مسيطر عليها بعد منطقة الإخراج الشرعية
الخطوة 4: إدخال ذاكرة التخزين المؤقت للصفحات للملف الهدف أصبح فاسدًا الآن
(ملف القرص لم يمس — فقط النسخة في الذاكرة تم تعديلها)
الخطوة 5: تنفيذ الملف المعدل → الجذر (ROOT)
ذاكرة التخزين المؤقت للصفحات في نواة لينكس تدعم النسخ في الذاكرة للملفات. عند قراءة ملف، يتم تخزين صفحاته مؤقتًا. يمكن لاستدعاء splice() الإشارة إلى هذه الصفحات المخزنة مؤقتًا مباشرة. من خلال تغذية صفحات ذاكرة التخزين المؤقت في قائمة التشتت AF_ALG AEAD، تهبط الكتابة الخدشية authencesn داخل تلك الصفحات المخزنة مؤقتًا، مما يؤدي فعليًا إلى تصحيح النسخة في الذاكرة لأي ملف قابل للقراءة — بما في ذلك الملفات الثنائية المميزة مثل sudo، pkexec، أو passwd.
الإصلاح من المنبع يعكس التحسين المعيب لعام 2017:
# التصحيح في الالتزام: a664bf3d603d
git show a664bf3d603d
CVE-2026-31431-CopyFail/
│
├── 📄 README.md ← أنت هنا
├── 📄 LICENSE ← رخصة بحثية/تعليمية
├── 📄 DISCLAIMER.md ← سياسة الاستخدام القانوني والأخلاقي
├── 📄 CHANGELOG.md ← تاريخ الإصدارات
│
├── 📂 docs/
│ ├── vulnerability-analysis.md ← تحليل متعمق: السبب الجذري والآليات
│ ├── exploitation-walkthrough.md ← منهجية خطوة بخطوة
│ ├── affected-kernels.md ← مصفوفة إصدارات النواة/التوزيعة الكاملة
│ ├── detection.md ← تغطية المدافع، Tenable، Wazuh
│ └── references.md ← جميع CVEs، المدونات، الاستشارات
│
├── 📂 exploit/
│ ├── README.md ← الاستخدام، المتطلبات الأساسية، التوزيعات المختبرة
│ ├── copyfail.py ← إثبات المفهوم المرجعي (تعليمي)
│ ├── trigger.c ← مشغل C لـ AF_ALG + splice()
│ └── variants/
│ ├── ubuntu.py ← متغير خاص بـ Ubuntu
│ ├── rhel.py ← متغير خاص بـ RHEL/CentOS
│ └── amazon_linux.py ← متغير خاص بـ Amazon Linux
│
├── 📂 detection/
│ ├── yara/
│ │ └── copyfail.yar ← قاعدة YARA لآثار الاستغلال
│ ├── sigma/
│ │ └── copyfail_lpe.yml ← قاعدة Sigma لنظام SIEM/SOC
│ └── scripts/
│ ├── check_vulnerable.sh ← فحص سريع لضعف النواة
│ └── detect_algif_aead.sh ← التحقق من تحميل/نشاط الوحدة
│
├── 📂 mitigation/
│ ├── README.md ← نظرة عامة على التخفيف
│ ├── disable_algif_aead.sh ← تعطيل وحدة النواة المتأثرة
│ ├── patch-notes.md ← تفاصيل التصحيح من المنبع
│ └── kubernetes-hardening.md ← تحصين K8s / الحاويات
│
├── 📂 lab/
│ ├── Vagrantfile ← آلة افتراضية ضعيفة قابلة لإعادة الإنتاج
│ ├── setup.sh ← سكريبت بدء المختبر
│ └── docker/
│ └── Dockerfile ← حاوية Ubuntu ضعيفة
│
├── 📂 reports/
│ ├── pentest-report-template.md ← قالب تقرير جاهز للعميل
│ └── sample-finding.md ← نموذج كتابة اكتشاف
│
└── 📂 assets/
├── demo.gif ← (اختياري) عرض توضيحي للمحطة الطرفية
└── diagrams/
└── page-cache-write.png ← مخطط تدفق الهجوم
اختبر دائمًا في بيئة معزولة ومصرح بها. لا تقم أبدًا بتشغيل استغلال على أنظمة الإنتاج.
# استنساخ المستودع
git clone https://github.com/0xFuffM3/CVE-2026-31431-CopyFail.git
cd CVE-2026-31431-CopyFail
# تشغيل الآلة الافتراضية للمختبر الضعيف
cd lab/
vagrant up
# SSH إلى المختبر
vagrant ssh
# التحقق من إصدار النواة (يجب أن يكون ضعيفًا)
uname -r
cd lab/docker/
# بناء صورة الحاوية الضعيفة
docker build -t copyfail-lab .
# التشغيل بالامتيازات المطلوبة للتفاعل مع النواة
docker run --rm -it --privileged copyfail-lab /bin/bash
# تشغيل سكريبت الفحص السريع
chmod +x detection/scripts/check_vulnerable.sh
./detection/scripts/check_vulnerable.sh
المخرجات المتوقعة على نظام ضعيف:
[!] إصدار النواة: 5.15.0-91-generic
[!] وحدة algif_aead: محملة
[✗] يبدو النظام ضعيفًا أمام CVE-2026-31431 (Copy Fail)
[*] الإجراء الموصى به: تطبيق تحديث النواة أو تعطيل algif_aead
المخرجات المتوقعة على نظام مصحح:
[✓] إصدار النواة: 6.1.132
[✓] يبدو النظام مصححًا ضد CVE-2026-31431 (Copy Fail)
يتطلب: وصول محلي كمستخدم غير مميز على نظام ضعيف.
# Python 3.6+
python3 --version
# وجود وحدات النواة المطلوبة
lsmod | grep algif_aead
# التحقق من أن الملف الثنائي الهدف قابل للقراءة
ls -la /usr/bin/sudo
cd exploit/
# التحقق من مستوى الامتياز الحالي
id
# uid=1000(user) gid=1000(user) groups=1000(user)
# تشغيل إثبات المفهوم Copy Fail
python3 copyfail.py
# التحقق من تصعيد الامتياز
id
# uid=0(root) gid=0(root) groups=0(root)
1. تعداد إصدار النواة
└─► uname -r / cat /proc/version
2. التحقق من تحميل algif_aead
└─► lsmod | grep algif_aead
3. تأكيد وجود موطئ قدم منخفض الامتياز
└─► id / whoami
4. تنفيذ إثبات المفهوم Copy Fail
└─► python3 exploit/copyfail.py
5. التحقق من وصول الجذر
└─► id && cat /etc/shadow
6. توثيق الأدلة
└─► لقطة شاشة + تسجيل إصدار النواة، التوزيعة، تجزئة الاستغلال
7. تطبيق التخفيف (بعد الاختبار)
└─► sudo bash mitigation/disable_algif_aead.sh
8. إدراج في تقرير اختبار الاختراق
└─► استخدم reports/pentest-report-template.md
// detection/yara/copyfail.yar
rule CopyFail_CVE_2026_31431 {
meta:
description = "Detects Copy Fail (CVE-2026-31431) exploit artefacts"
author = "0xFuffM3"
date = "2026-04-30"
reference = "https://copy.fail"
strings:
$py1 = "algif_aead" ascii
$py2 = "AF_ALG" ascii
$py3 = "splice" ascii
$py4 = "page_cache" ascii
$py5 = "authencesn" ascii
condition:
3 of them
}
تشغيل فحص YARA:
yara detection/yara/copyfail.yar /tmp/ -r
# detection/sigma/copyfail_lpe.yml
title: Copy Fail LPE Exploit Execution (CVE-2026-31431)
status: stable
logsource:
category: process_creation
product: linux
detection:
selection:
CommandLine|contains:
- 'AF_ALG'
- 'algif_aead'
- 'authencesn'
condition: selection
falsepositives:
- Legitimate crypto API testing
level: high
chmod +x detection/scripts/detect_algif_aead.sh
./detection/scripts/detect_algif_aead.sh
# Ubuntu / Debian
sudo apt-get update && sudo apt-get upgrade linux-image-generic
# RHEL / CentOS
sudo yum update kernel
# Amazon Linux
sudo yum update kernel
# بعد التحديث، أعد التشغيل
sudo reboot
algif_aead (مؤقت)# تشغيل سكريبت التخفيف
chmod +x mitigation/disable_algif_aead.sh
sudo bash mitigation/disable_algif_aead.sh
ما يفعله السكريبت:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || echo "[*] الوحدة غير محملة حاليًا"
echo "[✓] تم تعطيل algif_aead. أعد التشغيل لتأكيد الثبات."
انظر mitigation/kubernetes-hardening.md من أجل:
AF_ALG في سياسات أمان البودsocket(AF_ALG, ...)قالب تقرير جاهز للعميل موجود في reports/pentest-report-template.md.
الاكتشاف: تصعيد امتيازات محلي عبر Copy Fail (CVE-2026-31431)
الخطورة: عالي (CVSS 7.8)
المضيف: 10.10.10.55 (ubuntu-prod-01)
النواة: 5.15.0-91-generic
الأدلة:
- تصعيد من شل غير مميز (uid=1000) إلى الجذر (uid=0)
- تأكيد تحميل وحدة النواة algif_aead
- لا آثار على القرص — فقط ذاكرة التخزين المؤقت للصفحات
التوصية:
1. تطبيق تصحيح النواة من البائع فورًا
2. مؤقتًا: تعطيل وحدة algif_aead
3. مراجعة عقد Kubernetes وسير عمل CI/CD
اقرأ قبل استخدام أي شيء في هذا المستودع.
تم نشر هذا المستودع لأغراض البحث الأمني المشروع، واختبار الاختراق المأذون به، والأمن الدفاعي فقط.
الاستخدام غير المصرح به لهذه المواد قد ينتهك قانون الاحتيال وإساءة استخدام الكمبيوتر (CFAA)، وتوجيه الاتحاد الأوروبي 2013/40/EU، وقانون تكنولوجيا المعلومات الهندي لعام 2000، والقوانين المماثلة في ولايتك القضائية.
المؤلفون لا يتحملون أي مسؤولية عن سوء الاستخدام. راجع DISCLAIMER.md للإشعار القانوني الكامل.
باحثو الأمن مرحب بهم للمساهمة:
git checkout -b feat/مساهمتكgit commit -m "إضافة: قاعدة كشف لـ X"يرجى اتباع معايير الإفصاح المسؤول. لا تقم بتضمين كود استغلال مسلح جاهز للإنتاج يستهدف الأنظمة المصححة.
| # | القسم | الوصف |
|---|
| 1 | ما هو Copy Fail؟ | ملخص الثغرة |
| 2 | الغوص الفني العميق | تحليل السبب الجذري |
| 3 | الأنظمة المتأثرة | مصفوفة التوزيعات والنواة |
| 4 | هيكل المستودع | تخطيط الملفات |
| 5 | إعداد المختبر | إعادة الإنتاج بأمان |
| 6 | استخدام الاستغلال | سير عمل اختبار الاختراق |
| 7 | الكشف | YARA، Sigma، نصوص برمجية |
| 8 | التخفيف | التصحيح والتحصين |
| 9 | تقارير اختبار الاختراق | قوالب التقارير |
| 10 | الجوانب القانونية والأخلاقية | إخلاء المسؤولية |
| 11 | المراجع | CVEs، استشارات، مدونات |
| الخاصية | التفاصيل |
|---|
| معرف CVE | CVE-2026-31431 |
| الاسم المستعار | Copy Fail |
| CVSS v3.1 | 7.8 (عالي) |
| ناقل الهجوم | محلي |
| الامتيازات المطلوبة | منخفضة (أي مستخدم غير مميز) |
| تفاعل المستخدم | لا شيء |
| المكتشف | Xint Code (Theori) |
| تاريخ الكشف | 29 أبريل 2026 |
| حجم الاستغلال | 732 بايت (إثبات المفهوم بلغة بايثون) |
| حالة التصحيح | ✅ متوفر — العودة عن الالتزام a664bf3d603d |
| فرع النواة | متأثر؟ | الإصدار المصحح |
|---|
| 4.9.x (LTS) | ✅ نعم | 4.9.340+ |
| 5.4.x (LTS) | ✅ نعم | 5.4.295+ |
| 5.10.x (LTS) | ✅ نعم | 5.10.239+ |
| 5.15.x (LTS) | ✅ نعم | 5.15.185+ |
| 6.1.x (LTS) | ✅ نعم | 6.1.132+ |
| 6.6.x (LTS) | ✅ نعم | 6.6.83+ |
| 6.12.x (LTS) | ✅ نعم | 6.12.19+ |
| < 4.9 (قبل 2017) | ❌ لا | غير متاح — التحسين غير موجود |
| التوزيعة | الإصدارات المتأثرة | تم التصحيح؟ | الاستشارة |
|---|
| Ubuntu | < 26.04 (جميع الإصدارات) | ✅ مصححة | USN |
| Ubuntu 26.04 (Resolute) | ❌ غير متأثرة | — | — |
| RHEL / CentOS | 7, 8, 9 | ✅ مصححة | RHSA-2026 |
| Amazon Linux | 2, 2023 | ✅ مصححة | ALAS |
| SUSE / openSUSE | جميع المتأثرة | ✅ مصححة | SUSE-SU |
| Debian | Bullseye, Bookworm | ✅ مصححة | DSA |
| CloudLinux | 8, 9 | ✅ مصححة | استشارة |
| الأداة | دعم الكشف |
|---|
| Microsoft Defender (MDVM) | ✅ نعم |
| Tenable Nessus | ✅ نعم |
| Qualys | ✅ نعم |
| Wazuh | ✅ عبر قاعدة Sigma مخصصة |
| Palo Alto Cortex XDR | ✅ نعم |
| CrowdStrike Falcon | ✅ نعم |
| المصدر | الرابط |
|---|
| الإفصاح الأصلي (Xint/Theori) | copy.fail |
| المقال الفني لـ Xint Code | xint.io/blog/copy-fail |
| إدخال NVD | nvd.nist.gov |
| مدونة أمان Microsoft | microsoft.com/security/blog |
| استشارة Ubuntu | ubuntu.com/blog |
| استشارة CERT-EU | cert.europa.eu |
| الأسئلة الشائعة من Tenable | tenable.com/blog |
| Palo Alto Unit 42 | unit42.paloaltonetworks.com |
| استشارة CloudLinux | blog.cloudlinux.com |
| تحليل Bugcrowd | bugcrowd.com/blog |
| تصحيح نواة لينكس | kernel.org — commit a664bf3d603d |