العودة إلى المقالات العدد #2  / 

Explain This CVE

سجل CVE مكتوب للمتخصصين. بنيت فاحصًا في صفحة واحدة يشرح أي CVE بلغة واضحة، وحاولت أن أجعله صعب الإساءة.

CRITICAL vs
المشكلةمدير يقرر «هل نترك كل شيء اليوم؟» يحصل على درجة وسلسلة متجه و100 رابط.
NVD CISA KEV EPSS
المصادرثلاث قواعد بيانات عامة، تُجلب بالتوازي وتُختصر في إجابة صغيرة ثابتة.
تُعامل كعدائية.
القاعدةكل ما يأتي من قواعد البيانات، وكل ما يقوله الذكاء الاصطناعي، يُعامل كنص عدائي.

ماذا يفعل

تكتب معرّف CVE، مثل CVE-2021-44228 (Log4Shell)، فتحصل على صفحة واحدة بسبعة فصول، بالترتيب نفسه دائمًا:

  1. معرّف CVE وعنوانه وتاريخ نشره.
  2. الخطورة: درجة CVSS مع شارة ملونة، والمستوى مكتوبًا بكلمة.
  3. هل يُستغل فعلًا: قائمة الثغرات المستغلة المعروفة لدى CISA (KEV) واحتمال EPSS.
  4. ملخص بلغة واضحة.
  5. المنتجات والإصدارات المتأثرة.
  6. الإصلاح والتخفيف: ما تشترطه CISA وأول الإصدارات غير المتأثرة والتحديثات والنشرات.
  7. المراجع.

هناك عرضان للبيانات نفسها. عرض Manager يجيب عن «هل نحتاج إلى التصرف اليوم؟». وعرض Analyst يحتفظ بالتفاصيل. وينتهي كل ملخص بعبارة «Always verify with the official vendor advisory» (تحقق دائمًا من نشرة الشركة المصنّعة الرسمية).

كيف يعمل

هو صفحة ثابتة ودالة واحدة بلا خادم، بلا حسابات ولا قاعدة بيانات ولا اعتماديات. مع كل طلب تنفّذ الدالة هذه الخطوات بالترتيب:

  1. فحص طريقة الطلب، ثم تحديد معدل طلبات العميل.
  2. التحقق من المعرّف. يجب أن يطابق ^CVE-\d{4}-\d{4,10}$ وأن يكون معامل الاستعلام الوحيد.
  3. البحث في الذاكرة المؤقتة. إذا كان هناك طلب آخر للمعرّف نفسه قيد التنفيذ، ننتظره بدل السؤال من جديد.
  4. جلب NVD وقائمة CISA KEV وEPSS بالتوازي، لكل منها مهلته الخاصة.
  5. تسوية البيانات غير الموثوقة إلى شكل صغير ثابت.
  6. كتابة الملخص: بنموذج ذكاء اصطناعي إذا ضُبط مفتاح، وبقواعد ثابتة في غير ذلك.

NVD إلزامي. إذا فشل CISA أو EPSS أو نموذج الذكاء الاصطناعي، تظل الصفحة تعمل وتذكر ما هو ناقص. عبارة «تعذّر فحص قائمة CISA» تظهر على أنها غير معروف، وليس «غير مستغل» أبدًا، لأن فشل الاستعلام الذي يبدو خبرًا سارًا هو أسوأ ما تفعله أداة أمنية. ولهذا السبب نفسه تُعد قائمة KEV التي تحوي أقل من 100 إدخال معطوبة.

قرارات الأمان

البيانات تأتي من قواعد بيانات عامة، لكن يمكن لأي أحد التأثير في بعضها، ويقرؤها نموذج ذكاء اصطناعي. لذلك تُعامل كلها على أنها عدائية.

التهديدما فعلته
تسرّب مفاتيح APIتُقرأ المفاتيح من متغيرات البيئة في ملف خادم واحد. شيفرة المتصفح لا تذكرها أبدًا، واختبار يفحص كل ملف في المستودع بحثًا عن سلاسل تشبه المفاتيح.
مدخلات سيئة وSSRFنمط معرّف واحد صارم وبأحرف ASCII فقط. مضيفو واجهات API الثلاثة ثوابت، والمعرّف يدخل عبر URL.searchParams، وتُرفض إعادة التوجيه.
XSSينظّف الخادم النص ويحدد الأطوال. ولا يكتب المتصفح إلا عبر textContent. وسياسة Content Security Policy صارمة مع Trusted Types هي خط الدفاع الأخير.
حقن التعليمات (prompt injection)لا يحصل النموذج إلا على حقائق عامة، بلا أدوات ولا أسرار. ويجب أن تكون إجابته كائن JSON من ثلاثة حقول، وتُرفض إن احتوت على رابط أو وسم أو رقم إصدار غير موجود في الحقائق.
الإساءة والحصص20 طلبًا في الدقيقة لكل عميل، و6 استعلامات بلا تخزين مؤقت في الدقيقة، وميزانية مشتركة أقل قليلًا من حد NVD نفسه، وساعة من التخزين المؤقت.
بيانات المصدر العدائيةيُتحقق من نوع كل حقل، وتُحدد الحلقات والأحجام، ويُرفض أي سجل عن CVE مختلف عن المطلوب.

هناك أكثر من 140 اختبارًا على استجابات API حقيقية محفوظة، فتعمل دون اتصال. وأنفعها تمرين XSS يشغّل شيفرة المتصفح الحقيقية على استجابة مليئة بحمولات <img onerror> و<script> ويفشل عند أي عنصر أو سمة أو رابط غير متوقع.

ما لا يستطيع فعله بعد

  • الذاكرة المؤقتة ومحدد المعدل يعيشان في ذاكرة نسخة واحدة من الدالة، فهما بأفضل جهد. مخزن مشترك سيحل ذلك.
  • حصة NVD يتشاركها كل الزوار. وإذا نفدت تعرض الصفحة رسالة «مشغول».
  • نموذج ذكاء اصطناعي مُقنَع قد يكتب جملة مضللة لا تحتوي رابطًا ولا رقم إصدار. الفحوصات لا تكشف الرأي، ولذلك تُعرض الخطورة وKEV وEPSS منفصلة عن الملخص.
  • KEV يسجل الاستغلال المؤكد فقط، وEPSS احتمال وليس حكمًا.
  • اختبرت متصفح Chromium واحدًا، بالسمتين، وبعرضي سطح المكتب والهاتف. ولم أختبر Safari أو Firefox.

بنيته بمساعدة الذكاء الاصطناعي. صممت الميزات ومتطلبات الأمان، وراجعت الشيفرة واختبرتها.

جرّبه

الفاحص متاح على explain-this-cve.vercel.app، والشيفرة ودليل دراسة على GitHub. جرّب Log4Shell أولًا.