
دراسة حالة عملية في إدارة الثغرات الأمنية: كيف رصد Wazuh ثغرة SSRF حقيقية (CVE-2025-68616) في WeasyPrint، وكيف أعدت إنتاجها وقمت بإصلاحها.
أثناء تمرين تدريبي شخصي باستخدام Wazuh (منصة SIEM/XDR مفتوحة المصدر) على جهاز Kali Linux، حددت وحدة اكتشاف الثغرات ثغرة بدرجة خطورة عالية (CVSS 7.5) في حزمة WeasyPrint: وهي تجاوز لحماية SSRF (CVE-2025-68616). حققت في النتيجة، وأعدت إنتاج المشكلة عبر إثبات مفهوم محلي، وطبقت النسخة المصححة من المشروع، وتحققت من أن الاستغلال لم يعد يعمل. يوثّق هذا المستودع العملية كاملة: الاكتشاف، التحليل، إثبات المفهوم، والمعالجة.
Wazuh هي منصة أمان مفتوحة المصدر (SIEM + XDR) تجمع، من بين أمور أخرى، جمع السجلات، ومراقبة سلامة الملفات (FIM)، وكشف الشذوذ، واكتشاف الثغرات في البرامج المثبتة على المضيفات المراقبة، عبر مطابقة جرد الحزم مع قواعد بيانات CVE (من بينها NVD).
في هذا التمرين، عمل وكيل Wazuh على جهاز Kali GNU/Linux 2025.4، مع تشغيل المدير (Manager) والمفهرس (Indexer) ولوحة المعلومات (Dashboard) محليًا أيضًا. قبل الوصول إلى النتيجة، كانت البيئة تمتلك بالفعل مراقبة نشطة تعمل بشكل صحيح: جلسات تسجيل دخول PAM، وعمليات تنفيذ sudo، وتغييرات المنافذ المستمعة، وأحداث شذوذ rootcheck، وكلها مرئية في وحدة مطاردة التهديدات (Threat Hunting).
أبلغت وحدة اكتشاف الثغرات في Wazuh عن ثغرة واحدة بدرجة خطورة عالية على وكيل Kali، مرتبطة بحزمة weasyprint.
WeasyPrint هي مكتبة Python تحوّل HTML/CSS إلى مستندات PDF، وتُستخدم على نطاق واسع لإنشاء التقارير والفواتير والمستندات الديناميكية من تطبيقات الويب.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:Ncpe:2.3:a:kozea:weasyprint:*:*:*:*:*:*:*:*, حتى ما قبل 68.0)الوصف: قبل الإصدار 68.0، توجد ثغرة تجاوز لحماية SSRF في default_url_fetcher الخاصة بـ WeasyPrint. تسمح الثغرة للمهاجم بالوصول إلى موارد الشبكة الداخلية (مثل خدمات localhost أو نقاط نهاية بيانات التعريف السحابية) حتى عندما يكون المطور قد نفّذ url_fetcher مخصصًا لمنع هذا الوصول. يحدث ذلك لأن مكتبة urllib الأساسية تتبع عمليات إعادة توجيه HTTP تلقائيًا دون إعادة التحقق من الوجهة الجديدة مقابل سياسة الأمان الخاصة بالمطور. يحتوي الإصدار 68.0 على تصحيح لهذه المشكلة.
المراجع:
لتأكيد التأثير الفعلي قبل التصحيح، أعددت سيناريو استغلال محليًا ضد النسخة المعرّضة للثغرة المثبتة على النظام.
1. استنسخت المستودع مع تطبيق التصحيح (الفرع الرئيسي، الذي يتضمن بالفعل الإصلاح من الإصدار 68.0):
git clone https://github.com/Kozea/WeasyPrint.git
2. راجعت الكود المُصحح، وتحديدًا weasyprint/urls.py، حيث يقع منطق default_url_fetcher ومعالجة عمليات إعادة التوجيه:
3. أنشأت ملف HTML خبيثًا يحاول تسريب ملف نظام محلي عبر iframe، محاكيًا متجه SSRF / الوصول غير المصرح به للموارد الموصوف في CVE (ملاحظة: أسماء الملفات ومحتوياتها أدناه محفوظة تمامًا كما نُفذت، مطابقة لمخرجات الطرفية في لقطات الشاشة):
cat << 'EOF' > ataque.html
<!DOCTYPE html>
<html>
<head>
<title>PoC SSRF - WeasyPrint</title>
</head>
<body>
<h1>Prueba de Exfiltración de Archivos Locales</h1>
<p>Si el parche no está aplicado, el contenido de abajo debería mostrar el archivo /etc/passwd:</p>
</body>
</html>
EOF
python3 -m weasyprint ataque.html resultado_vulnerable.pdf
xdg-open resultado_vulnerable.pdf
4. النتيجة: عند فتح ملف PDF المُنشأ، يظهر iframe المُشير إلى file:///etc/passwd فارغًا، دون أي محتوى من ملف النظام. يؤكد هذا أنه في النسخة المُصححة، يتم حظر محاولة الوصول إلى مورد غير مصرح به بشكل صحيح.
git clone للمستودع الرسمي (الفرع الذي يتضمن commit التصحيح b6a14f0...).file:///etc/passwd عبر iframe.url_fetcher) قبل محاولة إعادة إنتاجه.تم تنفيذ هذا التمرين في بيئة شخصية ومعزولة (Kali Linux + Wazuh يعملان محليًا) لأغراض تعليمية. لم يتم الوصول إلى أي أنظمة تابعة لجهات خارجية.