
ماسح آلي ومساعد تصحيح لثغرة CVE-2026-31431، يكتشف مضيفات لينكس الضعيفة عبر SSH، ويتحقق من إصدارات النواة، ويطبق ترقيات النواة أو تخفيفات مؤقتة عبر توزيعات متعددة.
Copy Fail هو ماسح أمني آلي ومساعد تصحيح لاكتشاف وإصلاح ثغرة CVE-2026-31431 (تصعيد الامتيازات المحلية في نواة لينكس algif_aead) في البنية التحتية لنظام لينكس لديك.
CVE-2026-31431 هي ثغرة تصعيد امتيازات محلية (LPE) في وحدة نواة لينكس algif_aead (واجهة التشفير غير المتزامن لـ AEAD). تسمح هذه الثغرة للمستخدمين المحليين بتحقيق تصعيد الامتيازات إلى مستوى الجذر.
تساعد هذه الأداة في:
ملاحظة: هذه الأداة مخصصة فقط لأغراض التدقيق والتصحيح الداخلي من قبل مسؤولي الأنظمة. استخدمها فقط على الأنظمة التي تملكها أو لديك إذن بالوصول إليها.

algif_aead (محملة/غير محملة)ترقية النواة تلقائيًا على المضيفات المعرضة للخطر عبر مدير الحزم:
خيار: إعادة تشغيل تلقائية بعد اكتمال التصحيح
algif_aead عبر إعدادات modprobe.dقاعدة بيانات لإصدارات النواة المصححة لـ:
paramiko>=3.0.0 # مكتبة SSH
rich>=13.0.0 # واجهة طرفية جميلة
git clone https://github.com/gagaltotal/cve-2026-31431-copy-fail.git
cd cve-2026-31431-copy-fail
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
أو التثبيت اليدوي:
pip install paramiko>=3.0.0 rich>=13.0.0
python3 copyfail_scanner.py --help
# مسح شبكة فرعية باستخدام مفتاح SSH
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH_TO_KEY>
# مسح عدة مضيفات محددة
python3 copyfail_scanner.py --hosts <IP1>,<IP2>,<IP3> --user <USERNAME> [--password <PASSWORD>]
# مسح + تصحيح تلقائي
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH> --patch
# مسح + تخفيف مؤقت
python3 copyfail_scanner.py --subnet <CIDR> --user <USERNAME> --key <PATH> --mitigate
| الخيار | الوصف | مثال |
|---|---|---|
--subnet | الشبكة الفرعية المستهدفة CIDR (حصرية متبادلة مع --hosts) | --subnet 192.168.1.0/24 |
--hosts | قائمة عناوين IP مفصولة بفواصل (حصرية متبادلة مع --subnet) | --hosts 192.168.1.10,192.168.1.20 |
--user | اسم مستخدم SSH (مطلوب) | --user root |
--password | كلمة مرور SSH (اختياري، استخدمها إذا لم يكن هناك مفتاح) | --password secret123 |
--key | مسار مفتاح SSH الخاص | --key ~/.ssh/id_rsa |
--port | منفذ SSH (الافتراضي: 22) | --port 2222 |
--threads | عدد الخيوط المتوازية (الافتراضي: 30) | --threads 50 |
--patch | ترقية النواة تلقائيًا على المضيفات المعرضة للخطر | --patch |
--reboot | إعادة تشغيل تلقائية بعد التصحيح (استخدم مع --patch) | --patch --reboot |
--mitigate | تطبيق تخفيف مؤقت (تعطيل algif_aead) | --mitigate |
--output | تصدير نتائج المسح إلى ملف JSON | --output hasil.json |
--yes | تخطي موجه التأكيد قبل التصحيح/التخفيف | --yes |
python3 copyfail_scanner.py \
--subnet 192.168.1.0/24 \
--user ubuntu \
--key ~/.ssh/id_rsa
المخرجات: عرض جدول نتائج المسح والملخص
python3 copyfail_scanner.py \
--hosts 10.0.1.5,10.0.1.6,10.0.1.7 \
--user admin \
--password my_password123
python3 copyfail_scanner.py \
--subnet 172.16.0.0/16 \
--user root \
--key ~/.ssh/id_rsa \
--mitigate
الإجراء: مسح جميع المضيفات، ثم تعطيل وحدة algif_aead على المضيفات المعرضة للخطر (يطلب التأكيد)
python3 copyfail_scanner.py \
--subnet 192.168.0.0/24 \
--user ubuntu \
--key ~/.ssh/id_rsa \
--patch
الإجراء: ترقية النواة، لكن بدون إعادة تشغيل تلقائية (يتطلب إعادة تشغيل يدوية)
python3 copyfail_scanner.py \
--subnet 10.10.0.0/24 \
--user root \
--key ~/.ssh/id_rsa \
--patch \
--reboot \
--yes
الإجراء: مسح، تصحيح النواة، إعادة تشغيل تلقائية، تخطي التأكيد
python3 copyfail_scanner.py \
--subnet 192.168.1.0/24 \
--user sysadmin \
--key ~/.ssh/id_rsa \
--output scan_results_$(date +%Y%m%d_%H%M%S).json
المخرجات: جدول في الطرفية + نتائج JSON في ملف
python3 copyfail_scanner.py \
--subnet 10.0.0.0/25 \
--user ubuntu \
--key ~/.ssh/id_rsa \
--port 2222 \
--threads 50
مثال على مخرجات المسح:
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━┓
┃ IP ┃ Hostname ┃ Distro ┃ Kernel ┃ algif ┃ Status ┃ Action ┃ Notes ┃
┣━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━━━━━━━━╋━━━━━━━━━╋━━━━━━━━━╋━━━━━━━━━┫
┃ 192.168.1.10 ┃ web-01 ┃ Ubuntu 22.04 ┃ 6.8.0-60 ┃ LOADED ┃ ✓ آمن ┃ - ┃ مصحح ┃
┃ 192.168.1.11 ┃ web-02 ┃ Ubuntu 20.04 ┃ 5.4.0-200 ┃ NOT_LDD ┃ ✗ معرض ┃ مصحح ┃ - ┃
┃ 192.168.1.12 ┃ db-01 ┃ RHEL 8.9 ┃ 5.14.0-560 ┃ LOADED ┃ ? غير ┃ - ┃ توزيعة ┃
┗━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━┻━━━━━━━━━┻━━━━━━━━━┻━━━━━━━━━┛
الملخص:
إجمالي المضيفات الممسوحة: 12
يمكن الوصول إليها (SSH): 11
غير متصلة: 1
معرضة للخطر: 2
تم تصحيحها: 8
الحالة غير معروفة: 1
hostname -funame -r){
"cve": "CVE-2026-31431",
"scan_time": "2026-05-08T15:30:45.123456",
"results": [
{
"ip": "192.168.1.10",
"ssh_reachable": true,
"auth_ok": true,
"hostname": "web-01",
"distro": "Ubuntu 22.04 LTS",
"os_id": "ubuntu",
"kernel_version": "6.8.0-60-generic",
"algif_loaded": true,
"modprobe_blocked": false,
"patched": true,
"patch_applied": false,
"mitigation_applied": false,
"retry_count": 0,
"error": ""
}
]
}
يدعم الماسح الضوئي الاكتشاف التلقائي للتوزيعات التالية:
| التوزيعة | مدير الحزم | إصدارات النواة المصححة | ملاحظات |
|---|---|---|---|
| Ubuntu | apt | 6.8.0-60, 5.15.0-130, 5.4.0-216 | LTS والحالية |
| Debian | apt | 6.1.137, 5.10.235 | الإصدارات المستقرة |
| RHEL | dnf/yum | 5.14.0-570 | يشمل CentOS Stream |
| AlmaLinux | dnf | 5.14.0-570 | بديل RHEL المباشر |
| Rocky | dnf | 5.14.0-570 | موجه للمؤسسات |
| Fedora | dnf | 6.14.4, 6.13.12, 6.12.25 | أحدث الإصدارات |
| Amazon Linux | dnf | 6.1.134, 5.10.235, 4.14.353 | توافق AWS |
| SUSE / openSUSE | zypper | 6.4.0-18, 5.14.21-150600.24 | المؤسسات والمجتمع |
| Arch Linux | pacman | 6.14.4 | أحدث الإصدارات |
للتوزيعات غير المكتشفة: تحقق من إصدار النواة يدويًا. النواة >= 6.14.4 آمنة بشكل عام.
إذا كنت تفضل التصحيح اليدوي أو فشل التصحيح التلقائي، اتبع الدليل لكل توزيعة:
sudo apt update
sudo apt upgrade linux-image-generic kmod
sudo reboot
sudo dnf clean metadata
sudo dnf upgrade kernel
sudo reboot
sudo dnf upgrade kernel
sudo reboot
sudo dnf upgrade kernel
sudo reboot
sudo zypper update kernel-default
sudo reboot
sudo pacman -Syu linux linux-headers
sudo reboot
إذا لم تتمكن من إعادة التشغيل فورًا لترقية النواة، قم بتطبيق التخفيف:
# تعطيل وحدة algif_aead عبر modprobe.d
echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif_aead.conf
# إلغاء تحميل الوحدة إذا كانت محملة بالفعل
sudo rmmod algif_aead 2>/dev/null || echo "Module not loaded"
مهم:
CONFIG_CRYPTO_USER_API_AEAD=y، تكون الوحدة مدمجة في النواة، لذا فإن modprobe.d غير فعال → ترقية النواة هي الحل الوحيدError: Port SSH tidak terbuka
الحل:
nc -zv <IP> 22--port إذا كان SSH يعمل على منفذ مخصصError: Autentikasi SSH gagal
الحل:
chmod 600 ~/.ssh/id_rsassh -i ~/.ssh/id_rsa user@host--password إذا كنت تفضل مصادقة كلمة المرورExit code 1: dpkg: error processing...
الحل:
sudo visudoapt/dnf/yum بدون موجه كلمة مرورRetry: 3x | Host temporary unavailable
الحل:
--threads 10Status: ? TIDAK DIKETAHUI
الحل:
uname -r وقارن مع النشرة الأمنيةExit code 1: Failed to lock apt database
الحل:
sudo tail -f /var/log/apt/term.logللاستخدام الداخلي فقط — هذه الأداة مخصصة فقط لأغراض التدقيق وإدارة التصحيح من قبل مسؤولي الأنظمة المخولين.
DISCLAIMER:
- استخدم فقط على الأنظمة التي تملكها أو لديك إذن صريح بالوصول إليها
- التصحيح التلقائي وإعادة التشغيل قد يسببان توقفًا في الخدمة
- اختبر في بيئة تجريبية قبل النشر في الإنتاج
- تأكد من توفر نسخ احتياطية قبل التصحيح
- المطور غير مسؤول عن فقدان البيانات أو انقطاع الخدمة
المؤلف: GagalTotal
المستودع: https://github.com/gagaltotal/cve-2026-31431-copy-fail
التواصل: ghostgtr666
لإبلاغ الأخطاء أو طلبات الميزات أو الأسئلة:
آخر تحديث: 8 مايو 2026
إصدار الماسح الضوئي: 1.0