
ماسح آلي ومساعد تصحيح لثغرة 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