
ثغرة تخزينية من نوع البرمجة النصية عبر المواقع (XSS) في ميزة منشورات المدونة في ERPNEXT الإصدار v15.67.0 تتيح للمهاجمين تنفيذ نصوص برمجية أو HTML عشوائية عبر حمولة مخصصة يتم حقنها في حقل المحتوى.
📌 ملخص
توجد ثغرة تخزين البرمجة النصية عبر المواقع (XSS) في وحدة المدونة في ERPNext (v15.67.0) / Frappe (v15.72.4). يمكن لمستخدم مصادق يملك صلاحية إنشاء أو تعديل مشاركات المدونة حقن كود HTML/JavaScript مُعدّ خصيصًا في حقل content. يتم تخزين هذه الحمولة وتنفيذها في متصفح أي مستخدم يعرض صفحة مشاركة المدونة، مما يسمح بتنفيذ نصوص برمجية عشوائية، وكشف المعلومات، وتعطيل الخدمة، وهجمات أخرى على جانب العميل. صلاحيات المسؤول ليست مطلوبة بشكل صارم — يمكن لأي مستخدم لديه إذن لإنشاء/تعديل مشاركات المدونة استغلالها.
نوع الثغرة: تخزين البرمجة النصية عبر المواقع (CWE‑79)
المنتجات المتأثرة: ERPNext / Frappe
الإصدارات المتأثرة (المبلَّغ عنها):
المكوّن المتأثر: وحدة المدونة في ERPNext
المسار: /app/blog-post/<blog_name>
الحقل القابل للاستغلال: content (نموذج إنشاء / تعديل مشاركة المدونة)
نوع الهجوم: عن بُعد (يتطلب مصادقة وصلاحيات إنشاء مشاركات المدونة)
الخطورة: عالية (تنفيذ كود على جانب العميل، سرقة البيانات، احتمال اختطاف الجلسة)
درجة CVSS v3.1 التقديرية: 7.5 (عالية) — تقدير؛ يجب على الجهة المعتمدة احتساب الدرجة النهائية
الحالة: غير مُعالجة (كما ورد)
مكتشف الثغرة: Mohammed Aloli
تاريخ الاكتشاف: غير محدد
معرّف CVE: CVE-2025-56379
اختبر فقط في بيئات مصرّح بها / بيئات معملية. لا تقم بتشغيلها ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.
خطوات إعادة الإنتاج
سجّل الدخول إلى نسخة ERPNext المستهدفة كمستخدم لديه صلاحية إنشاء/تعديل مشاركات المدونة.
انتقل إلى مسار إنشاء/تعديل مشاركة المدونة، على سبيل المثال:
/app/blog-post/<blog_name>
في حقل content أدخل الحمولة واحفظ المشاركة:
افتح صفحة مشاركة المدونة (/app/blog-post/<blog_name>) كمستخدم آخر (أو نفس المستخدم في متصفح جديد). يتم تنفيذ الحمولة في متصفح المشاهد (هنا، alert("xss")).
ملاحظات: يستخدم إثبات المفهوم تنبيه onerror بسيطًا. يمكن للهجمات الحقيقية تسريب ملفات تعريف الارتباط، أو تنفيذ إجراءات نيابةً عن الضحية، أو تحميل نصوص برمجية عن بُعد (رهنًا بـ CSP وإشارات ملفات تعريف الارتباط).
يقوم المهاجم الذي يمكنه إنشاء أو تعديل مشاركات المدونة بتخزين نص برمجي خبيث في حقل content. أي مستخدم — بما في ذلك المسؤولون — يزور صفحة مشاركة المدونة سينفّذ النص البرمجي للمهاجم في سياق متصفحه. تشمل العواقب سرقة الجلسة (إذا لم تكن ملفات تعريف الارتباط HttpOnly)، وتنفيذ إجراءات قسرية في جلسة الضحية، وتسريب البيانات من الصفحات التي يمكن للمهاجم الوصول إليها، وهجمات إعادة توجيه الواجهة (UI redress)، واحتمال تعطيل الخدمة لمكونات جانب العميل.
content عند الإدخال و/أو قم بترميزه عند الإخراج باستخدام أداة تعقيم HTML آمنة تزيل الوسوم والخصائص الخطرة (أزل خصائص on*، وروابط javascript:، و<script>، و``، إلخ). فضّل المكتبات جيدة الصيانة.<p>، <b>، <i>، <ul>، <li>، <a href> مع تحقق صارم من href). امنع معالجات الأحداث المضمّنة.'unsafe-inline'، واستخدم سماحات النصوص البرمجية القائمة على nonce/hash عند الحاجة).HttpOnly واضبط خصائص المناسبة لتقليل مخاطر سرقة الكوكيز والمخاطر الشبيهة بـ CSRF.https://github.com/frappe/erpnexthttps://github.com/frappe/frappehttps://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.htmlالمؤلف: Mohammed Aloli
هذا التقرير مخصص للأغراض الدفاعية والمعالجة والتوعية فقط. لا تحاول استغلال هذه الثغرة ضد أنظمة لا تملكها أو ليس لديك تفويض صريح لاختبارها. إذا كنت تدير ERPNext/Frappe، فطبّق الإصلاحات، وفرض التعقيم، واتبع إرشادات التخفيف أعلاه.
SameSite