
توجد ثغرة تخزينية من نوع Cross-Site Scripting (XSS) في Issabel PBX الإصدار 4.0.0-6. تتيح هذه الثغرة لمهاجم موثّق حقن أكواد JavaScript أو HTML عشوائية عبر حقلي الإدخال Group و Description الموجودين تحت System → Users → Groups.
| الحقل | التفاصيل |
|---|---|
| معرّف CVE | CVE-2023-37191 |
| المنتج | Issabel PBX (issabel-pbx) |
| الإصدار المتأثر | 4.0.0-6 |
| نوع الثغرة | البرمجة النصية عبر المواقع المخزّنة (XSS) |
| درجة الخطورة | متوسطة |
| تاريخ الاكتشاف | 7 يوليو 2023 |
| اكتشفها | Sahil Ojha |
| الصفحة الرسمية للمطوّر | https://www.issabel.org/ |
| الكود المصدري | https://github.com/IssabelFoundation/issabelPBX |
| بيئة الاختبار | Windows |
توجد ثغرة البرمجة النصية عبر المواقع المخزّنة (XSS) في Issabel PBX الإصدار 4.0.0-6. يفشل التطبيق في تنظيف أو ترميز المدخلات التي يقدمها المستخدم بشكل صحيح قبل تخزينها في قاعدة البيانات وعرضها لاحقًا في المتصفح. يتيح ذلك لمهاجم مُصادَق حقن أكواد JavaScript أو HTML عشوائية عبر حقلي الإدخال Group وDescription الموجودَين ضمن System → Users → Groups.
بمجرد حفظ الحمولة الخبيثة، يتم تخزينها بشكل دائم على الخادم. وفي كل مرة يزور فيها أي مستخدم (بما في ذلك المسؤولون) الصفحة المتأثرة، يتم تنفيذ السكربت المحقون تلقائيًا داخل جلسة المتصفح الخاصة به — دون الحاجة إلى أي إجراء إضافي من المهاجم. وهذا هو ما يميّز XSS المخزّنة (الدائمة) عن XSS المنعكسة؛ فالأثر أوسع وأكثر خطورة لأن الحمولة تؤثر على جميع زوار الصفحة.
System → Users → Groups في واجهة الويب الخاصة بـ Issabel PBXGroup (حقل الاسم) وDescription (حقل النص)يمكن أن يتيح الاستغلال الناجح لهذه الثغرة للمهاجم ما يلي:
ونظرًا لأن الحمولة مخزّنة على الخادم، فإن كل مستخدم يزور الصفحة المخترقة يتأثر — مما يضاعف الضرر مقارنةً بهجوم XSS المنعكسة.
الخطوة 1: سجّل الدخول إلى واجهة الويب الخاصة بـ Issabel PBX باستخدام بيانات اعتماد المسؤول.
الخطوة 2: انتقل إلى System → Users → Groups. في حقلي الإدخال Group و/أو Description، أدخل حمولة XSS التالية:
"><script>alert(1)</script>
يجب أن تبدو الحقول مشابهة للقطة الشاشة أدناه:

الخطوة 3: انقر على Save. يتم الآن تخزين الحمولة بشكل دائم في قاعدة بيانات التطبيق.
الخطوة 4: عد إلى صفحة System → Users → Groups (أو اجعل أي مستخدم آخر يزورها). يتم تنفيذ السكربت المحقون تلقائيًا في المتصفح، كما هو موضح أدناه:

للتخفيف من هذه الثغرة، يجب على فريق تطوير Issabel PBX تطبيق الإصلاحات التالية:
التحقق من المدخلات: تحقّق بدقة من جميع المدخلات التي يقدمها المستخدم من جانب الخادم. ارفض القيم التي تحتوي على أحرف HTML خاصة (<, >, ", ', &) في الحقول التي لا تتطلب تنسيق HTML أو قم بتنظيفها.
ترميز المخرجات: عند عرض البيانات المخزنة مرة أخرى في المتصفح، طبّق ترميزًا للمخرجات يراعي السياق (مثل ترميز كيانات HTML) لتحييد أي وسوم محقونة. نظرًا لأن Issabel PBX مبني على PHP، استخدم دالتي PHP المدمجتين htmlspecialchars() أو htmlentities() بدلاً من التصفية المخصصة.
سياسة أمان المحتوى (CSP): نفّذ ترويسة HTTP لسياسة أمان محتوى صارمة للحد من المصادر التي يُسمح بتشغيل السكربتات منها. يمكن لسياسة CSP مهيأة بشكل صحيح أن تمنع تشغيل السكربتات المحقونة حتى لو تم تجاوز تنظيف المدخلات.
التدقيق الأمني المنتظم: أجرِ مراجعات دورية للكود واختبارات اختراق لتحديد ومعالجة ثغرات الحقن عبر التطبيق بأكمله.
يُقدَّم هذا المحتوى لأغراض تعليمية وبحثية فقط. المؤلف غير مسؤول عن أي إساءة استخدام لهذه المعلومات. احرص دائمًا على الحصول على إذن كتابي مناسب قبل اختبار الثغرات على أي نظام لا تملكه.