
مدقق أمني لإعدادات نواة لينكس للقراءة فقط وبدون وكيل (محلي وعبر SSH). التركيز الأولي: فحوصات ترحيل TCP / MPTCP الخاصة بـ CVE-2026-98432.
أداة خفيفة مفتوحة المصدر لتدقيق أمان Linux مكتوبة بلغة Python.
دقّق في خوادم Linux المحلية والبعيدة عبر SSH دون تثبيت وكلاء أو تعديل إعدادات النظام.
هذا مدقق للإعدادات وحالة التصحيحات، وليس ماسحًا للثغرات. فهو يبلّغ عن إعدادات النواة (kernel) والاستخدام المرتبط بثغرة ما، و يقارن حزمة النواة قيد التشغيل بالإصدار المُصحَّح من المورّد. ولا يحاول أبدًا إطلاق ثغرة.
| الميزة | v0.2.0 |
|---|---|
| Python 3.8+، بدون تبعيات خارجية | ✅ |
| تدقيق Linux محلي | ✅ |
| تدقيق بعيد عبر SSH (بدون وكيل) | ✅ |
| فحص عدة خوادم بالتوازي | ✅ |
| Ubuntu / Debian / Rocky / AlmaLinux / RHEL / Fedora | ✅ |
| فحص ترحيل مقبس طلبات TCP | ✅ |
| فحص إعدادات MPTCP واستخدامها | ✅ |
| اكتشاف النواة والتوزيعة وإعادة التشغيل المعلّقة | ✅ |
| تقارير JSON / CSV | ✅ |
| التحقق من تصحيحات ثغرات CVE في النواة (Ubuntu، Debian، RHEL، Rocky، AlmaLinux، CentOS) | ✅ |
| تحديثات أمان تلقائية | ❌ أبدًا |
| تغيير إعدادات الخادم | ❌ أبدًا |
يبني المتحكّم (جهاز Mac أو محطة عمل Linux لديك) سكربت sh صغيرًا متوافقًا مع POSIX
من الفحوصات المحددة ويمرّره عبر أنبوب إلى sh -s على كل هدف عبر
SSH. لا يُنسخ أي شيء إلى الهدف ولا يُثبَّت عليه. يطبع السكربت
حقائق بصيغة key=value؛ ويجري كل التقييم على المتحكّم، الذي يتعامل مع
مخرجات الهدف كبيانات غير موثوقة (تُزال أحرف التحكم، وتُقتطع القيم،
ويُبطَّل حقن صيغ CSV).
راجع بالضبط ما سيُشغَّل على خوادمك قبل تشغيله:
python3 netviser_cve_audit.py --print-script
الأهداف تحتاج فقط إلى sh والأدوات القياسية (ss من iproute2، awk،
grep، sed). لا يُشترط وجود Python على الأهداف.
وحدة التحكم تحتاج إلى Python 3.8+ وOpenSSH (macOS أو Linux).
git clone https://github.com/maxigentr/netviser-linux-security-auditor.git
cd netviser-linux-security-auditor
# Audit this Linux machine
python3 netviser_cve_audit.py --local
# Audit a remote server
python3 netviser_cve_audit.py --host [email protected]
# Custom SSH port and key
python3 netviser_cve_audit.py --host [email protected] --port 2290 --identity ~/.ssh/audit_ed25519
# Multiple servers, 10 in parallel
python3 netviser_cve_audit.py --hosts servers.txt --workers 10
# Non-root SSH user with passwordless sudo, for full process and BPF visibility
python3 netviser_cve_audit.py --host admin@web01 --sudo
# Watch MPTCP counters for 60 seconds to see if MPTCP is used right now
python3 netviser_cve_audit.py --hosts servers.txt --sample-interval 60
# Also check whether other kernel CVEs are patched
python3 netviser_cve_audit.py --hosts servers.txt --cve CVE-2024-1086,CVE-2024-26925
يمكن أيضًا تثبيت الأداة (pip install .) وتشغيلها باسم netviser-audit
أو python3 -m netviser_audit.
راجع examples/servers.example.txt للاطلاع على
تنسيق ملف المضيفين. تُستخدم منافذ كل مضيف عبر ssh://user@host:port أو عبر
اسم مستعار في ~/.ssh/config.
| الخيار | الوصف |
|---|---|
--local / --host H / --hosts FILE | ما الذي يجب تدقيقه |
--checks IDS | مجموعة فرعية مفصولة بفواصل (راجع --list-checks)؛ تُضاف التبعيات تلقائيًا |
--cve IDS | الإبلاغ أيضًا عن حالة تصحيح النواة لهذه الثغرات (قابل للتكرار أو مفصول بفواصل) |
--offline | عدم تنزيل بيانات الاستشارات الأمنية من المورّد |
--advisories FILE | استخدام بيانات استشارات محفوظة مسبقًا؛ لا تزال السجلات المفقودة تُنزَّل ما لم يُستخدم --offline |
--save-advisories FILE | حفظ بيانات الاستشارات المستخدمة، للاستخدام دون اتصال أو للتشغيلات القابلة للتكرار |
--sudo | تشغيل أداة الجمع باستخدام sudo -n (لا يطلب كلمة المرور أبدًا) |
--sample-interval N | قراءة عدّادات MPTCP مرتين بفاصل N ثانية |
--output PREFIX | بادئة التقرير (الافتراضي netviser_audit ← .json، .csv) |
--no-report | الطباعة إلى الطرفية فقط |
--fail-on-review | الخروج بالرمز 3 عند وجود أي نتيجة REVIEW (لأجل CI / cron) |
-v، --verbose | عرض جميع النتائج، وليس فقط REVIEW / UNKNOWN |
تعمل جلسات SSH باستخدام BatchMode=yes (المصادقة بالمفتاح فقط) و
StrictHostKeyChecking=accept-new.
حالة الخروج: 0 نجاح، 1 تعذّر فحص هدف، 2 خطأ في الاستخدام،
3 وجود نتائج تتطلب مراجعة (فقط مع --fail-on-review).
| المعرّف | ما الذي يفحصه |
|---|---|
kernel | التوزيعة، إصدار النواة، حزمة النواة قيد التشغيل، نواة أحدث مثبّتة / الحاجة إلى إعادة التشغيل |
patch | حالة التصحيح لكل ثغرة CVE بالنسبة لحزمة النواة قيد التشغيل، من بيانات استشارات المورّد |
tcp_migration | net.ipv4.tcp_migrate_req؛ برامج BPF المحمّلة من نوع sk_reuseport (root + bpftool) |
mptcp | net.mptcp.enabled، مدير المسارات، CONFIG_MPTCP، مقابس وعمليات MPTCP، عدّادات المصافحة، استخدام mptcpize |
cve_2026_98432 | الإعدادات ذات الصلة بالثغرة CVE-2026-98432؛ حالة تصحيحها هي patch.CVE-2026-98432 |
لكل نتيجة حالة — OK أو INFO أو REVIEW أو UNKNOWN — وحكم قابل للقراءة آليًا
(مثل mptcp.usage = IN_USE).
يجيب فحص patch عن سؤال واحد لكل ثغرة CVE: هل النواة قيد التشغيل الآن
مُصحّحة وفقًا لمورّد التوزيعة؟
dpkg-query / rpm -qf): اسمها، وإصدارها الدقيق، وحزمة المصدر. كما تسرد
معرّفات CVE المذكورة في سجل تغييرات تلك الحزمة وفي
التصحيحات الحيّة المحمّلة (canonical-livepatch، kpatch-patch).~
بشكل صحيح.| التوزيعة | مصدر الاستشارات |
|---|---|
| Ubuntu | Ubuntu Security API — لكل إصدار ونوع نواة (linux، linux-hwe-*، linux-aws، …) |
| Debian | بيانات Debian Security Tracker عبر OSV |
| RHEL، Rocky Linux، AlmaLinux، CentOS | Red Hat Security Data API — مسار RHEL الرئيسي |
تُرسَل معرّفات CVE فقط إلى هذه الخدمات؛ ولا يغادر أي شيء يخص مضيفيك
وحدة التحكم. للاستخدام في بيئات معزولة عن الشبكة، شغّل الأداة مرة واحدة مع
--save-advisories adv.json ثم لاحقًا مع --offline --advisories adv.json.
| الحكم | الحالة | المعنى |
|---|---|---|
PATCHED | موافق | إصدار النواة قيد التشغيل ≥ الإصدار المُصلح من المورّد |
NOT_AFFECTED | موافق | يقول المورّد إن هذا الإصدار / النواة غير متأثر |
LIVEPATCHED | موافق | ثغرة livepatch محمّلة تُدرج CVE على أنها مُصلحة |
VULNERABLE | مراجعة | تم إصدار إصلاح؛ النواة قيد التشغيل أقدم. قم بتثبيته وإعادة التشغيل |
FIX_PENDING | مراجعة | أعدّ المورّد إصلاحًا لم يُصدر بعد (Ubuntu) |
FIX_NOT_AVAILABLE | مراجعة | متأثر، ولم يُنشر أي إصلاح بعد |
WONT_FIX | مراجعة | لن يُصلح المورّد هذا الإصدار (مثلًا نهاية الدعم) |
MENTIONED_IN_CHANGELOG | معلومات | لا يوجد حكم من المورّد، لكن سجل التغييرات للنواة قيد التشغيل يشير إلى CVE |
NO_DATA | غير معروف | لا يوجد لدى المورّد سجل لهذا CVE أو الإصدار أو نوع النواة |
UNSUPPORTED | غير معروف | لا يوجد مصدر استشارات لهذا التوزيع (مثلًا Fedora، SUSE) |
NOT_CHECKED | غير معروف | بيانات الاستشارات غير متاحة (--offline، خطأ في الشبكة) أو حزمة النواة غير معروفة |
القيود:
VULNERABLE، وتذكر النتيجة ذلك.NOT_CHECKED).net.mptcp.enabled = 1 يعني فقط أن مقابس MPTCP يمكن إنشاؤها. قبل أن
يعطّل أي شخص MPTCP، يجمع فحص mptcp أدلة على الاستخدام الفعلي: