
ماسح ومصحح آلي قائم على SSH لثغرات رفع الامتيازات المحلية في نواة لينكس CVE-2026-43284 وCVE-2026-43500، مع اكتشاف متعدد المضيفين، وكشف رفع الامتيازات، وتخفيف حظر الوحدات النمطية.
إخلاء مسؤولية: صُممت هذه الأداة خصيصًا لعمليات تدقيق الأمان الداخلية المشروعة. الاستخدام دون إذن ضد أنظمة لا تملكها يُعد انتهاكًا. تم التطوير بواسطة Gagaltotal666 - GhostGTR666.
تحدد هذه الأداة وتخفف من ثغرتين من نوع تصعيد الامتيازات المحلية (LPE) في نواة Linux:
f4c50a4034e6 بتاريخ 2026-05-05)/etc/modprobe.d/| الميزة | الوصف |
|---|---|
| ماسح متعدد المضيفين | فحص شبكة فرعية كاملة (CIDR) أو قائمة عناوين IP محددة بالتوازي |
| اكتشاف TCP Ping | اكتشاف تلقائي للمضيفات النشطة قبل SSH (يمكن تخطيه باستخدام --skip-discovery) |
| تدقيق عميق | تحليل إصدار النواة، حالة الوحدات، تصحيح upstream، مستوى الامتيازات |
| تقييم الثغرات | تصنيف تلقائي للحالة: VULNERABLE، MITIGATED، LIKELY_PATCHED، POSSIBLY_SAFE، MODULE_NOT_LOADED |
| تخفيف آلي | حظر الوحدات، إلغاء تحميلها، ومسح page-cache بأمر --patch واحد |
| حقن Sudo بدون لمس | حقن تلقائي لكلمة المرور عبر sudo -S — لا حاجة لتكوين NOPASSWD |
| كشف ذكي للمصادقة | اكتشاف تلقائي لتصعيد الامتيازات (root، sudo NOPASSWD، sudo بكلمة مرور) |
| التحقق من صحة CLI | فحص مسبق للأخطاء الإملائية، التحقق من صحة ملف مفتاح SSH (منع known_hosts المزيف) |
| تنفيذ متوازٍ | تجمع خيوط لعمليات الفحص و SSH (افتراضي 20 عاملًا) |
| تقارير JSON | تصدير نتائج التدقيق الكاملة بتنسيق JSON |
| مخرجات منسقة | مخرجات ملونة + ملخص PrettyTable (تراجع تلقائي إذا كانت المكتبة غير متوفرة) |
| معالجة الإشارات | إيقاف تشغيل آمن عبر SIGINT/SIGTERM |
Python 3.8 أو أحدث
المكتبات: paramiko، colorama، prettytable
python3 -m venv .venv
source .venv/bin/activate
# استنساخ المستودع
git clone https://github.com/gagaltotal/dirtyfrag-scanner.git
cd dirtyfrag-scanner
# تثبيت التبعيات
pip install -r requirements.txt
# أو
pip install paramiko colorama prettytable

يكتشف الثغرات دون تغيير أي شيء في الخادم المستهدف.
# باستخدام كلمة المرور
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user ghostgtr666 --password 'server@02!'
# باستخدام مفتاح SSH
python3 dirtyfrag_scanner.py --subnet 10.134.205.0/24 --user root --key ~/.ssh/id_rsa
# باستخدام كليهما (كلمة المرور كاحتياط إذا فشل المفتاح)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --key ~/.ssh/id_rsa
# فحص عناوين IP محددة (بدون اكتشاف)
python3 dirtyfrag_scanner.py --hosts 192.168.1.10,192.168.1.20 --user admin --password 'pass'
ينفذ التدقيق ويطبق التخفيف مباشرة على الخوادم المعرضة للخطر.
# التصحيح باستخدام كلمة المرور (حقن SUDO تلقائي، بدون الحاجة إلى NOPASSWD)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user ghostgtr666 --password 'server@02!' --patch
# التصحيح باستخدام تسجيل دخول root
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa --patch
# التصحيح مع عمال مخصصين (فحص أسرع)
python3 dirtyfrag_scanner.py --subnet 192.168.0.0/16 --user admin --password 'pass' --patch --workers 50
--subnet CIDR فحص شبكة فرعية CIDR (مثال: 192.168.1.0/24)
--hosts IP[,IP,...] فحص عناوين IP محددة (مفصولة بفواصل، بدون مسافات)
--user USERNAME اسم مستخدم SSH (مطلوب)
--password PASSWORD كلمة مرور SSH (استخدم علامات الاقتباس إذا كانت هناك أحرف خاصة)
--key PATH المسار إلى مفتاح SSH الخاص (مثال: ~/.ssh/id_rsa، وليس known_hosts!)
--port PORT منفذ SSH مخصص (الافتراضي: 22)
--timeout SECONDS مهلة اتصال SSH (الافتراضي: 10، الحد الأقصى: 300)
--skip-discovery تخطي اكتشاف TCP ping، والاتصال المباشر بـ SSH لجميع عناوين IP
--workers NUM عدد عمال SSH المتوازيين (الافتراضي: 20، الحد الأدنى: 1، الحد الأقصى: 100)
--patch تطبيق التخفيف على المضيفات المعرضة للخطر
--output FILE حفظ نتائج التدقيق في ملف JSON
صُممت هذه الأداة للعمل في بيئات خوادم SSH متنوعة دون الحاجة إلى تعديل sudoers:
Root مباشر (موصى به)
--user root --key ~/.ssh/id_rsa --patch
Sudo NOPASSWD
--user ubuntu --key ~/.ssh/id_rsa --patch
/etc/sudoers مُهيأ بالفعل بـ NOPASSWDsudo -nSudo مع حقن كلمة المرور (بدون لمس) ⭐
--user ubuntu --password 'mypass' --patch
/etc/sudoers: ALL=(ALL) ALL القياسيsudo -S -p ''هجين (مفتاح + كلمة مرور)
--user ubuntu --key ~/.ssh/id_rsa --password 'mypass' --patch
عند استخدام علامة --patch، تنفذ الأداة الخطوات التالية بالتسلسل:
/etc/modprobe.d/dirtyfrag.conf القديم (إن وجد)/etc/modprobe.d/dirtyfrag.conf:
install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false
chmod 644 على ملف التكوينrmmod esp4 (تخطَّ إذا لم تكن محملة)rmmod esp6 (تخطَّ إذا لم تكن محملة)rmmod rxrpc (تخطَّ إذا لم تكن محملة)echo 3 > /proc/sys/vm/drop_cachesملاحظة: إذا كانت الوحدة لا تزال محملة بعد rmmod، سيتم إبلاغ المستخدم بأن إعادة التشغيل قد تكون ضرورية.
──────────────────────────────────────────────────────────
المضيف 1/2: 10.134.205.163 (ubuntu-web-01)
──────────────────────────────────────────────────────────
النظام : Ubuntu 22.04.4 LTS
النواة : 6.8.0-111-generic
الامتياز : user
CVE-2026-43284 (xfrm-ESP) [POSSIBLY_SAFE]
esp4 محملة : لا
esp6 محملة : لا
التخفيف : غير مطبق
تصحيح upstream: غير مضمّن (<6.15)
CVE-2026-43500 (RxRPC) [VULNERABLE]
rxrpc محملة : نعم
التخفيف : غير مطبق
ملاحظة: لا يوجد تصحيح upstream بعد — التخفيف هو الحل الوحيد
[✓] تم تطبيق التخفيف بنجاح!
[فحص الامتيازات] OK (باستخدام: sudo (تمرير تلقائي))
[تنظيف المسار المستهدف] OK
[كتابة تكوين modprobe] OK
[التحقق من كتابة التكوين] OK (3 إدخالات)
[تعيين أذونات الملف] OK
[إلغاء تحميل وحدة esp4] تم التخطي (غير محملة أو تمت إزالتها بالفعل)
[إلغاء تحميل وحدة esp6] تم التخطي (غير محملة أو تمت إزالتها بالفعل)
[إلغاء تحميل وحدة rxrpc] تم الإلغاء
[مسح page cache] OK
[التحقق النهائي] ملف التكوين صالح
[التحقق النهائي] تم إلغاء تحميل جميع الوحدات المعرضة للخطر
[النتيجة] تم تطبيق التخفيف بنجاح
════ الملخص ════
+----------------+-------------------+------+------------+------------+----------+
| المضيف | النظام/النواة | الامتياز | CVE-43284 | CVE-43500 | تم التصحيح؟ |
+----------------+-------------------+------+------------+------------+----------+
| 10.134.205.163 | Ubuntu 22.04.4 | user | POSSIBLY_S | VULNERABLE | نعم ✓ |
| 10.134.205.164 | Ubuntu 22.04.4 | user | VULNERABLE| VULNERABLE | فشل ✗ |
| 10.134.205.165 | Debian 12 | root | MITIGATED | MITIGATED | — |
+----------------+-------------------+------+------------+------------+----------+
════ الإحصائيات ════
المضيفات المفحوصة : 3
الأخطاء : 0
معرضة للخطر 43284: 1
معرضة للخطر 43500: 2
تخفيفات ناجحة : 1
تخفيفات فاشلة: 1
└─ 1 فشل بسبب امتيازات غير كافية
المدة : 12.4s
استخدم علامة --output لحفظ نتائج التدقيق الكاملة:
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --output report.json
{
"scan_time": "2026-05-12 14:23:45",
"tool": "DirtyFrag Scanner v1.0",
"cves": ["CVE-2026-43284", "CVE-2026-43500"],
"total_hosts": 3,
"results": [
{
"host": "10.134.205.163",
"hostname": "ubuntu-web-01",
"os": "Ubuntu 22.04.4 LTS",
"kernel": "6.8.0-111-generic",
"kernel_v": [6, 8, 0],
"is_root": false,
"cve_43284": {
"status": "POSSIBLY_SAFE",
"esp4_loaded": false,
"esp6_loaded": false,
"mitigation_applied": false,
"upstream_patched": false
},
"cve_43500": {
"status": "VULNERABLE",
"rxrpc_loaded": true,
"mitigation_applied": false
},
"patch_applied": true,
"patch_msg": "...",
"error": null
}
]
}
# خاطئ
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa.pub
# صحيح (استخدم المفتاح الخاص، وليس .pub)
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa
الملف الذي قدمته ليس مفتاحًا خاصًا. تحقق من:
.pub (مفتاح عام)known_hosts-----BEGIN PRIVATE KEY----- أو -----BEGIN RSA PRIVATE KEY-----# خاطئ
python3 dirtyfrag_scanner.py --user ghostgtr666--password 'pass' --subnet 192.168.1.0/24
# صحيح
python3 dirtyfrag_scanner.py --user ghostgtr666 --password 'pass' --subnet 192.168.1.0/24
المستخدم ليس لديه وصول sudo، أو لم يتم توفير كلمة المرور عند الحاجة:
# الخيار 1: استخدم root مباشرة
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa --patch
# الخيار 2: وفر كلمة المرور للحقن التلقائي في sudo
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --patch
# الخيار 3: قم بتكوين NOPASSWD في /etc/sudoers
echo 'admin ALL=(ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers
قم بزيادة --timeout:
python3 dirtyfrag_scanner.py --subnet 192.168.1.0/24 --user admin --password 'pass' --timeout 30
بعض التوزيعات تترجم النواة مسبقًا دون وحدات esp4/esp6/rxrpc. تحقق يدويًا:
# على المضيف المستهدف
cat /proc/cmdline | grep -i module
lsmod | grep -E 'esp4|esp6|rxrpc'
python3 dirtyfrag_scanner.py \
--subnet 192.168.100.0/24 \
--user monitoring \
--password 'monitoring123' \
--workers 30 \
--output full-audit.json
python3 dirtyfrag_scanner.py \
--subnet 10.0.0.0/16 \
--user root \
--key ~/.ssh/prod_rsa \
--patch \
--workers 50 \
--output emergency-patch.json
python3 dirtyfrag_scanner.py \
--hosts 192.168.1.10,192.168.1.20,192.168.1.30 \
--user ubuntu \
--key ~/.ssh/dev_rsa \
--output critical-servers.json
python3 dirtyfrag_scanner.py \
--subnet 192.168.50.0/24 \
--user deploy \
--key ~/.ssh/deploy_ed25519 \
--password 'deploy@backup' \
--patch \
--output deploy-scan.json
تم التطوير بواسطة Gagaltotal666 - GhostGTR666
GitHub: github.com/gagaltotal
إخلاء مسؤولية: هذه الأداة مخصصة فقط لعمليات تدقيق الأمان المشروعة والموافق عليها. المستخدم مسؤول عن استخدام هذه الأداة.