الفحص والمراقبة¶
الفحص هو حلقة العمل الأساسية في لوحة CVE Intelligence. يقارن هذا الفصل بين الفحص الكامل والمراقبة، يوثّق سلوك الخادم، ويقدّم مخططات للمشغّلين.
لماذا وضعان؟¶
يوفّر NVD تغطية واسعة لكنه يفرض حدود معدل. استطلاع NVD كل دقيقتين سيتعطّل أو يفشل. لذلك تتخطى المراقبة NVD وتستعلم مصادر أسرع. الفحص الكامل للجرد الكامل عندما يُقبل التأخير.
عادةً يشغّل المشغّلون فحصاً كاملاً يومياً (أو عند الطلب) ويبقون المراقبة مفعّلة بين الفحوصات.
مقارنة الأوضاع¶
| الجانب | فحص كامل | مراقبة |
|---|---|---|
| النقطة | POST /api/scan |
POST /api/watch |
| NVD | نعم | لا |
| تحميل مسبق KEV | نعم | نعم (للعلامات) |
knownIds على العميل |
غير مطلوب | يميّز النتائج «الجديدة» |
meta.mode |
full |
watch |
تدفق الفحص الكامل¶
flowchart LR
classDef ui fill:#e9edf5,stroke:#00baba,color:#253343
classDef api fill:#f3fcfc,stroke:#008c8c,color:#253343
classDef ext fill:#fff7ed,stroke:#eda232,color:#253343
UI[المتصفح]:::ui --> S[POST /api/scan]:::api
S --> KEV[تحميل مجموعة KEV]:::api
S --> GH[كاش GitHub]:::api
S --> RSS[خلاصات RSS]:::api
S --> Loop[لكل أداة في المكدس]:::api
Loop --> NVD[استعلام NVD]:::ext
Loop --> OSV[استعلام OSV]:::ext
Loop --> GHA[مشورات GitHub]:::ext
S --> M[دمج + إثراء KEV]:::api
M --> T[ترجمة اختيارية]:::api
T --> R[استجابة JSON]:::api
شرح المخطط¶
يحمّل الخادم الكتالوجات المشتركة مرة واحدة، ثم لكل أداة يستعلم NVD (في الوضع الكامل) وOSV وGitHub بالتوازي ويربط تطابقات كلمات RSS. تُدمج النتائج حسب معرّف CVE؛ عضوية KEV تضبط exploited_in_wild. الترجمة الاختيارية تملأ translations / title_fa. يسجّل meta.sources_updated_at أوقات الجلب الناجحة لكل مصدر.
روال الفحص الكامل¶
- ينقر المستخدم فحصاً كاملاً؛ يرسل العميل
stackوعلمtranslate. - يتحقق الخادم من مصفوفة المكدس ويبدأ المؤقتات.
- يُحمَّل JSON لـ CISA KEV وصفحات GitHub (كاش) وRSS بالتوازي.
- لكل أداة تُنفَّذ NVD/OSV/GitHub ضمن نافذة
SCAN_DAYS. mergeVulnerabilitiesيزيل التكرار ويدمج وسومsources.enrichWithKevيعلّم CVE المستغلة في البرية.- عند
translate: trueقد تُملأ حقول فارسية على الفحص؛ اللغات الأخرى لاحقاً عبر/api/translate. - تُعاد أعداد الملخص ومصفوفة vuln؛ يخزّن العميل عبر
src/lib/scanCache.ts(stackKeyيجب أن يطابق المكدس الحالي).
ذاكرة مسح العميل¶
يخزّن المتصفح آخر فحص ناجح في cve-radar:last-scan مع مفتاح مكدس (أسماء أدوات مُطبَّعة ومرتّبة). عند إعادة التحميل، يستعيد loadLastScan vuln والملخص عند تطابق المفتاح؛ وإلا تُتجاهَل الذاكرة. يعمل persistLastScan بعد الفحص الكامل وعندما تُرجع المراقبة عناصر جديدة.
هذا يتجنّب فحصاً كاملاً إلزامياً في كل جلسة متصفح مع إبقاء النتائج ضمن المكدس النشط.
تسلسل المراقبة¶
sequenceDiagram
participant B as المتصفح
participant A as Express API
participant O as OSV
participant G as GitHub
participant R as RSS
B->>A: POST /api/watch {stack, knownIds}
A->>O: استعلام لكل أداة
A->>G: كاش المشورات
A->>R: تحليل الخلاصة
A->>A: دمج + فرق مع knownIds
A-->>B: newVulns, hasNew, meta
روال المراقبة¶
- يشغّل خطاف
useWatchعلى الفاصل (2/5/15 دقيقة من الإعدادات). - يرسل العميل معرّفات CVE الحالية كـ
knownIds. - يجلب الخادم OSV/GitHub/RSS فقط.
- المعرفات الجديدة خارج
knownIdsتملأnewVulns؛ شريط/toast إن كانت التنبيهات مفعّلة. - يدمج العميل في القائمة المحلية ويحدّث
sources_updated_at.
GitLab وفيدات توزيعات Linux¶
إلى جانب NVD/OSV/GitHub/RSS، يمكن لـ الفحص الكامل الاستعلام عن قاعدة GitLab Advisory Database (GraphQL) وعدة فيدات أمن توزيعات Linux عند تفعيلها في إعدادات المصدر أو عبر متغيرات env.
| المصدر | الدور |
|---|---|
| GitLab | استشارات الحزم (npm، PyPI، Maven، Go، …) — يُتخطى عند AIRGAPPED=true ما لم يُضبط GITLAB_ADVISORY_MIRROR_URL |
| Alpine | JSON secdb لكل إصدار (ALPINE_RELEASES) |
| Ubuntu USN | خريطة CVE→حزمة من JSON أمن Ubuntu |
| Red Hat | إثراء (بيانات CVE، وليس صفوفاً مستقلة) |
| Debian | Security Tracker (DEBIAN_ENABLED أو DEBIAN_TRACKER_CACHE_PATH للـ air-gap) |
| Amazon Linux | XML updateinfo ALAS |
| MITRE CVE | إثراء JSON 5.x اختياري عند MITRE_CVE_ENABLED=true |
يطابق مستوى الحزمة عبر shared/distroPackages.ts (أداة المكدس → اسم حزمة التوزيع). تُدمج نتائج التوزيع مع NVD/OSV على معرّف CVE؛ sources_failed يسجّل أخطاء جزئية للفيد كباقي المصادر المدمجة.
ملاحظات واستثناءات¶
- حد معدل الخادم (429): لـ
POST /scanوPOST /watchسطلان منفصلان في الذاكرة لكل IP (RATE_LIMIT_SCAN_PER_MINافتراضي 12،RATE_LIMIT_WATCH_PER_MINافتراضي 120). الاستجابة:code: "RATE_LIMITED"،retryAfterSec.POST /scan/validateغير محدود. عدة تبويبات أو React StrictMode في التطوير قد تُطلق حد المراقبة — أغلق التبويبات الإضافية أو اضبط متغيرات env. - بدون
NVD_API_KEYقد يصطدم مكدس كبير بـ HTTP 403/429 من NVD upstream — أضف مفتاحاً أو أعد المحاولة لاحقاً (مختلف عن حد معدل التطبيق). - فحص كامل تلقائي كل 30 دقيقة اختياري في الإعدادات؛ مستقل عن فاصل المراقبة.
- شريط التقدم في الرأس يقدّر التقدم من جهة العميل أثناء الفحوصات الطويلة.
التالي: الترجمة واللغات