العمليات والتقصيمتقدم60mL12

CVE Hunting — اصطاد اللي يفرق فعلاً

NVD و MITRE و KEV و EPSS — تعرف الجديد وتعرف اللي مهم

#CVE#NVD#KEV#EPSS#OSV#GHSA

ليه تتبّع الـ CVEs مهارة لوحدها؟

كل يوم بينزل حوالي 100 ثغرة جديدة. مين بيكسب؟ اللي بيعرف أنهي ثغرة بتخصّه خلال ساعات، مش أيام. المهاجم بيقرا نفس النشرة اللي بتقراها أنت. سباق بقى.

تشبيه — شرح مبسط
بُص. أنت حارس إطفاء. مش كفاية تعرف إن في حريق.. لازم تعرف الحريق ده قريب من بيتك ولا لأ. ولا فيه وقود زي اللي بتخزنه. ولا بينتشر بسرعة. الـ CVE feeds دي راديو الإطفاء بتاعك.
اوعى تتلخبط في ده
البحث في قواعد الـ CVE قانوني 100%. بس لو استغليت ثغرة على نظام مش معاك تصريح صريح ليه — دي جناية. الدرس ده للتدريب الحمائي وللعمليات المصرّح بيها بس. مفيش "أنا بس بجرّب".

هرم المصادر — أيها تستخدم متى

NVD — National Vulnerability Database
قاعدة NIST الرسمية. تضيف CVSS و CPE و references. متأخرة 1–7 أيام عن MITRE. الأفضل للبحث و الإحصائيات.
nvd.nist.gov/vuln/search
CVE.org / MITRE
المصدر الأول لتسجيل CVE. أسرع وصولاً، لكن البيانات أحياناً ناقصة قبل أن يفهرسها NVD.
cve.org · cve.mitre.org
CISA KEV
Known Exploited Vulnerabilities — فقط الثغرات المُستغلة فعلياً في البريّة. أهم قائمة في العالم لتحديد الأولويات. حدّث يومياً.
cisa.gov/known-exploited-vulnerabilities-catalog
EPSS
Exploit Prediction Scoring System — احتمال (0–1) أن تُستغل ثغرة خلال 30 يوماً. أدق من CVSS لتحديد الأولويات.
first.org/epss
GitHub Advisory (GHSA)
ثغرات حِزم البرمجيات (npm, pypi, maven, go, rubygems...). أسرع مكان لاكتشاف ثغرات الـ supply chain.
github.com/advisories
OSV.dev
موحّد لكل قواعد بيانات الـ open-source. API مجاني سريع. الأفضل للأتمتة.
osv.dev
قاعدة عملية
للأولويات: ابدأ من KEV ثم EPSS > 0.7 ثم CVSS. لا تعتمد على CVSS وحده — كثير من ثغرات CVSS 9+ لا تُستغل أبداً.

رؤية الجديد — Recently Added CVEs

إزاي تشوف اللي نزل النهارده / الأسبوع ده بس، مش قائمة أبدية بتقرفك؟

1) NVD — RSS و فلتر تاريخ

$ # آخر 8 أيام مرتبة بتاريخ النشر (واجهة RSS الرسمية):
$ curl -s 'https://nvd.nist.gov/feeds/xml/cve/misc/nvd-rss-analyzed.xml' | head -40
$ # أو عبر API بفلتر pubStartDate:
$ curl -s 'https://services.nvd.nist.gov/rest/json/cves/2.0?pubStartDate=2026-04-23T00:00:00.000&pubEndDate=2026-04-30T23:59:59.000' | jq '.vulnerabilities[].cve.id' | head

2) CISA KEV — feed يومي

$ # آخر 10 ثغرات أُضيفت لقائمة المُستغلّة فعلياً:
$ curl -s https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json \ | jq '.vulnerabilities | sort_by(.dateAdded) | reverse | .[0:10] | .[] | {cve: .cveID, product, dateAdded, ransomware: .knownRansomwareCampaignUse}'
{ "cve": "CVE-2026-2891", "product": "Cisco IOS XE", "dateAdded": "2026-04-29", "ransomware": "Known" }

3) GitHub Advisories — فلتر بالـ ecosystem

GraphQL / REST
# REST: آخر تحذيرات npm critical
curl -s 'https://api.github.com/advisories?severity=critical&ecosystem=npm&per_page=20' \
  | jq '.[] | {ghsa: .ghsa_id, cve: .cve_id, summary, published_at}'

# واجهة الويب — أقوى فلاتر:
# https://github.com/advisories?query=ecosystem%3Apip+severity%3Acritical+published%3A%3E2026-04-01

4) Twitter/X و Mastodon — السباق الحقيقي

  • حسابات لا غنى عنها: @CVEnew, @cisagov, @vxunderground, @gossithedog, @TrustedSec.
  • infosec.exchange على Mastodon — مجتمع باحثي الأمان الفعلي.
  • يكشف PoCs قبل أن يصل CVE إلى NVD بـ 24–72 ساعة.

البحث الصحيح — Search Like a Pro

NVD Advanced Search — أهم الفلاتر

  • CPE Match — ابحث بالمنتج لا بالنص الحر: cpe:2.3:a:fortinet:fortios:7.4.0 يعطيك كل CVEs لإصدار محدد.
  • CVSS v3 Range — مثلاً 9.0–10.0 فقط.
  • Has Exploit / KEV — لتصفية ما يهمّ بالفعل.
  • Modified vs Published — أحياناً CVE قديم يُعاد فتحه ببيانات جديدة.

OSV.dev — الأسرع للأتمتة

$ # هل حِزمة معيّنة في إصدار معيّن مصابة؟
$ curl -s -X POST https://api.osv.dev/v1/query -d '{ "package": {"name": "lodash", "ecosystem": "npm"}, "version": "4.17.20" }' | jq '.vulns[] | {id, summary, severity}'

Google Dorks للـ PoCs و Write-ups

Google Dorks
# PoC على GitHub
site:github.com "CVE-2024-3400" PoC

# تحليل تقني من باحثين
"CVE-2024-3400" (writeup OR analysis OR "deep dive") -site:nvd.nist.gov

# Exploit-DB
site:exploit-db.com CVE-2024-3400

# Patch diff (جوهرة!) — أحياناً المطوّر ينشر الإصلاح قبل الإفصاح الكامل
site:github.com "CVE-2024-3400" path:CHANGELOG

أدوات سطر الأوامر

$ # nvdlib — مكتبة Python للبحث في NVD
$ pip install nvdlib && python3 -c "import nvdlib; [print(c.id, c.score) for c in nvdlib.searchCVE(keywordSearch='ivanti', cvssV3Severity='CRITICAL')[:5]]"
$ # searchsploit — قاعدة Exploit-DB محلياً
$ searchsploit fortinet ssl-vpn
$ # vulners — متعدد المصادر، يحتاج API key مجاني
$ vulners --search 'CVE-2024-3400'

ربط CVE بالأصول — أهم خطوة فعلياً

قائمة CVEs من غير ما تعرف انت شغّال إيه أصلاً = ضوضاء. الربط بيحصل عبر CPE (Common Platform Enumeration) أو SBOM.

- طب يا حضرتك، أنا متابع KEV كل يوم، مش ده كفاية؟

لأ يا نجم. KEV بيقولك "في حريق". الـ inventory هو اللي بيقولك "الحريق ده في بيتك ولا في حتة تانية". من غيره، إنت بتطفي حرايق الجيران.

  • SBOM — أنشئ Software Bill of Materials لكل تطبيق (CycloneDX / SPDX) ثم مرّره عبر grype أو trivy.
  • Asset Inventory — قاعدة بيانات لكل خدمة, إصدارها, و الـ CPE المقابل.
  • Continuous Scanningnuclei templates على البنية كل 6 ساعات.
$ # توليد SBOM ثم فحصه
$ syft packages dir:/opt/app -o cyclonedx-json > sbom.json
$ grype sbom:./sbom.json --fail-on high
NAME VERSION FIXED-IN VULNERABILITY SEVERITY openssl 3.0.7 3.0.13 CVE-2024-0727 Medium libxml2 2.9.13 2.9.14 CVE-2022-40303 High

أتمتة التتبع — Pipeline يومي

المحترفين مش بيفتحوا NVD باليد كل صبح. الخط النموذجي:

  1. كل ساعة: اسحب KEV feed + NVD modified + GHSA.
  2. قارن مع Asset Inventory (CPE match).
  3. اضرب CVSS × EPSS × Asset criticality → أولوية.
  4. أرسل تنبيه Slack/Teams عند تطابق > عتبة محددة.
  5. افتح تذكرة Jira تلقائياً مع رابط NVD و SLA حسب الأولوية.
bash
#!/usr/bin/env bash
# مثال: تنبيه Slack لأي إضافة جديدة على KEV تطابق منتجات لديك
KEV=$(curl -s https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json)
INVENTORY=$(jq -r '.products[]' assets.json)

echo "$KEV" | jq -r --arg today "$(date -u -v-1d +%Y-%m-%d)" \
  '.vulnerabilities[] | select(.dateAdded >= $today) | "\(.cveID)\t\(.product)"' \
| while IFS=$'\t' read -r cve product; do
    if grep -qi "$product" <<< "$INVENTORY"; then
      curl -X POST -H 'Content-type: application/json' \
        --data "{\"text\": \"NEW KEV: $cve - $product (you run this)\"}" \
        "$SLACK_WEBHOOK"
    fi
  done

غلطات الـ junior — اللي بتحرق وقت الفريق

اللي بيحصل فعلياً
  • بتثق في الـ CVSS لوحده. ثغرة 9.8 على خدمة جوّه الشبكة أقل خطر من 6.5 على واجهة مكشوفة للإنترنت. الـ context هو اللي بيحكم.
  • بتنسى الـ CPE versions. "WordPress 6.2" غير "WordPress 6.2.1". لو فلترت غلط هتفوّت أو هتولّع تنبيهات على الفاضي.
  • بتعتمد على NVD بس. حوالي 30% من الـ CVEs ما ليهاش CPE — مش هتظهر لو بتدوّر بإسم المنتج.
  • بتتجاهل الـ transitive dependencies. معظم اختراقات السنين الأخيرة جاية من package عمقه 3 جوه node_modules محدش حتى يعرف موجود.
  • بتجري ورا الـ hype. Log4Shell كان كبير، صح. بس دلوقتي state actors لسه بيستخدموا CVE-2017-* علشان حد ما رقّعش. اللي قديم بيقتل أكتر من اللي جديد.

الخلاصة: لو الفريق بتاعك بيقفل تذكرة لمجرد إن CVE قاعد على KEV من غير ما يبص للـ inventory، أنت ما عندكش CVE management — أنت عندك مسرح.

الخلاصة الناشفة

السؤال الأول دايماً: "هل أنا شغّال ده فعلاً؟". مش "إيه خطورته؟".

اللي عنده SBOM + KEV + automation = بيرد في ساعات. اللي بيفتح NVD باليد = بيلاقي الـ ransomware قبل ما يلاقي الـ patch.

اختار صفك.

الحماية و الأولويات — كيف ترتّب التصحيح

منهجية ترتيب التصحيح (Patch Triage)
  1. P0 — خلال 24 ساعة: KEV + أصل مكشوف للإنترنت + لا workaround.
  2. P1 — خلال 7 أيام: EPSS > 0.5 أو CVSS ≥ 9 على أصل حسّاس.
  3. P2 — خلال 30 يوماً: CVSS 7–8.9 داخلي.
  4. P3 — الدورة الشهرية: الباقي.
  • اشترك في vendor security advisories مباشرة (Microsoft MSRC, Cisco PSIRT, Fortinet PSIRT).
  • راقب @CVEnew + KEV feed عبر RSS reader يصل سريعاً.
  • اربط SBOM بـ CI/CD: ابنِ لا يمر إذا حزمة فيها CVE معروفة.
  • درّب فريقك على قراءة CVE: السؤال الأول دائماً "هل لديّ هذا؟" لا "ما خطورته؟".
بُص بقى
MITRE ATT&CK بتربط الـ CVEs بتقنيات الهجوم. مثال: CVE-2024-3400 → T1190 (Exploit Public-Facing Application). استخدم ده في سيناريوهات Threat Hunting بدل ما تبص للـ CVE لوحده.