
CVE-2025-8517: تثبيت الجلسة في Vvveb CMS v1.0.6.1
المؤلف: Andrew Paul
تاريخ الاكتشاف: 9 يونيو 2025
البائع: Vvveb
رابط البائع: http://vvveb.com
GitHub البائع: https://github.com/givanz/Vvveb
الإصدار المتأثر: 1.0.6.1 (والإصدارات السابقة على الأرجح)
معرف CVE: CVE-2025-8517
تم اكتشاف ثغرة تثبيت الجلسة، المصنفة ضمن CWE-384: تثبيت الجلسة، في آلية المصادقة لنظام Vvveb CMS الإصدار 1.0.6.1. يفشل النظام في إنشاء وفرض معرف جلسة جديد بعد تسجيل الدخول الناجح. يسمح هذا الخلل الأساسي بنوعين من الهجمات: هجوم تثبيت جلسة قياسي باستخدام معرف جلسة صادر عن الخادم، وهجوم أكثر خطورة حيث يمكن للمهاجم اختراع سلسلة عشوائية لاستخدامها كمعرف جلسة. في كلتا الحالتين، يمكن استغلال الثغرة لاختطاف جلسة المستخدم الموثقة، مما يؤدي إلى السيطرة الكاملة على الحساب.
تتوافق هذه الثغرة مع عدة فئات في OWASP Top 10 2021:
A01:2021 - التحكم في الوصول المكسور: الأثر النهائي للهجوم هو فشل كامل في التحكم في الوصول، حيث يحصل المهاجم على جميع الصلاحيات وحقوق الوصول لحساب المستخدم المختطف.
A04:2021 - تصميم غير آمن: عملية المصادقة غير آمنة بطبيعتها لأنها تفتقر إلى إجراء أمني أساسي: إعادة توليد رموز الجلسة عند تغيير مستوى الصلاحية.
A07:2021 - فشل في تحديد الهوية والمصادقة: يفشل التطبيق في إدارة دورة حياة معرفات الجلسة بشكل صحيح بعد تسجيل الدخول، مما يسمح للمهاجم بتثبيت جلسة وانتحال شخصية مستخدم.
السبب الجذري لهذه الثغرة هو الفشل الكامل في إدارة حالة الجلسة بشكل آمن أثناء عملية المصادقة. يتجلى ذلك في عيبين متميزين لكن مترابطين:
فشل في إعادة توليد معرفات الجلسة الشرعية: لا يقوم التطبيق بإنشاء PHPSESSID جديد بعد تسجيل الدخول الصحيح. يسمح هذا للمهاجم بزيارة صفحة تسجيل الدخول، والحصول على معرف جلسة شرعي قبل المصادقة، وتثبيته في متصفح الضحية، ثم استخدام نفس المعرف لاحقًا لاختطاف الجلسة.
قبول معرفات جلسة عشوائية: والأكثر خطورة، أن آلية الجلسة في التطبيق تثق بشكل أعمى بالمعرفات التي يوفرها العميل. لا يحتاج المهاجم إلى معرف جلسة حقيقي من الخادم؛ يمكنه اختراع أي سلسلة عشوائية (مثل 'hacked')، سيقبلها الخادم ثم يرفعها إلى جلسة موثقة بعد تسجيل الدخول. هذا يزيل خطوة من المهاجم ويسلط الضوء على عمق الخلل.
يمكن استغلال هذه الثغرة من خلال أي ناقل يسمح للمهاجم بتعيين أو "تثبيت" ملف تعريف ارتباط (cookie) في متصفح الضحية. تشمل النواقل الشائعة:
البرمجة النصية عبر المواقع (XSS): يمكن لثغرة XSS منفصلة تمكين الاستغلال عن بُعد.
الوصول المادي (محطة عمل مشتركة): يمكن للمهاجم تعيين ملف تعريف الارتباط يدويًا على جهاز كمبيوتر مشترك.
الرجل في المنتصف (MitM): يمكن للمهاجم على شبكة غير آمنة اعتراض حركة المرور لوضع ملف تعريف الارتباط.
يوضح هذا الإثبات السيطرة الكاملة على حساب مسؤول من جهاز منفصل، مسلطًا الضوء على مسار الهجوم الأكثر خطورة باستخدام معرف مخترع من قبل المهاجم.
الخطوات:
المُهاجم يخترع معرفًا: يختار المهاجم سلسلة عشوائية لتكون معرف الجلسة، على سبيل المثال: session-hijacked-by-andy.
المهاجم يزرع ملف تعريف الارتباط: على جهاز الضحية، يستخدم المهاجم أدوات المطور في المتصفح لتعيين ملف تعريف الارتباط PHPSESSID على القيمة session-hijacked-by-andy لنطاق Vvveb CMS.
الضحية (المسؤول) يسجل الدخول: الضحية، باستخدام نفس المتصفح، يسجل الدخول إلى Vvveb CMS باستخدام بيانات اعتماد المسؤول الخاصة به.
فشل النظام: يتحقق نظام CMS من صحة بيانات اعتماد الضحية لكنه يفشل في إنشاء ملف تعريف ارتباط جلسة جديد. بدلاً من ذلك، يرقّي ملف تعريف الارتباط الخاص بالمهاجم (session-hijacked-by-andy) إلى جلسة مسؤول موثقة بالكامل.
المهاجم يختطف الجلسة: من جهاز كمبيوتر منفصل، يحدد المهاجم ملف تعريف الارتباط PHPSESSID في متصفحه على القيمة session-hijacked-by-andy ويتنقل إلى لوحة تحكم إدارة Vvveb CMS.
النتيجة: يُمنح المهاجم وصولاً إداريًا كاملاً وفوريًا إلى نظام CMS دون الحاجة إلى كلمة مرور الضحية.
يؤدي الاستغلال الناجح إلى اختراق كامل لحساب المستهدف. إذا كانت الضحية مسؤولاً، يكون التأثير خطيرًا ويتضمن:
سيطرة إدارية كاملة: يحصل المهاجم على تحكم كامل في نظام CMS، بما يعادل المسؤول المختطف.
اختراق البيانات: قدرة كاملة على قراءة أو تعديل أو تصدير أو حذف جميع محتوى الموقع وبيانات المستخدم وتفاصيل التكوين الحساسة.
استمرارية النظام: يمكن للمهاجم إنشاء مستخدم جديد بصلاحيات مسؤول كاملة. يوفر هذا بابًا خلفيًا دائمًا في النظام، حتى بعد انتهاء صلاحية الجلسة المختطفة الأصلية أو تسجيل خروج المسؤول الشرعي.
هجمات أخرى: يمكن استخدام حساب المسؤول المخترق لرفع ملفات ضارة (مثل القشرة الويب) أو شن هجمات أخرى على الخادم الأساسي وزواره.
يجب على التطبيق إعادة توليد معرف الجلسة عند أي تغيير في مستوى الصلاحية، خاصة مصادقة المستخدم. التنفيذ القياسي في PHP هو استدعاء session_regenerate_id(true); فورًا بعد التحقق من صحة بيانات اعتماد المستخدم وقبل منح الوصول إلى الجزء الموثق من التطبيق.
تاريخ الاكتشاف: 9 يونيو 2025
تاريخ إخطار البائع: 10 يونيو 2025
تاريخ إقرار البائع: 16 يونيو 2025
تاريخ إصدار التصحيح: 17 يونيو 2025
تاريخ الإفصاح العام: 26 يوليو 2025