
إثبات المفهوم لـ CVE-2026-25126 الذي يوضح التلاعب بعدد الأصوات في PolarLearn عبر التحقق غير السليم من معامل اتجاه التصويت في المنتدى أثناء وقت التشغيل، مع تفاصيل الإصلاح.
البحث: Joshua van Rijswijk
إثبات المفهوم (PoC) لثغرة CVE-2026-25126، وهي ثغرة منطقية عالية الخطورة في واجهة برمجة تطبيقات التصويت في منتدى PolarLearn.
يفشل نقطة النهاية POST /api/v1/forum/vote في فرض تحقق صارم من صحة الحقل direction في وقت التشغيل.
نظرًا لأن أنواع TypeScript لا يتم فرضها في وقت التشغيل، يمكن للمهاجم إرسال سلاسل عشوائية يتم التعامل معها بشكل غير صحيح في المراحل اللاحقة.
يسمح هذا بالتلاعب بعدد الأصوات من خلال إنشاء ما يسمى الأصوات السلبية الوهمية.
تثق واجهة البرمجة في نص JSON دون تحقق:
const body: VoteRequestBody = await request.json()
const { postId, direction } = body
const result = await VoteServer(postId, direction)
يتعامل المنطق اللاحق مع أي قيمة غير متوقعة وغير فارغة على أنها صوت سلبي، ويحفظ القيم غير الصالحة.
من خلال التبديل بين تصويت غير صالح وإعادة تعيين بقيمة null، يمكن لمستخدم واحد خفض عدد الأصوات بشكل متكرر.
fetch الأصلي)git clone https://github.com/<your-username>/CVE-2026-25126-PoC.git
cd CVE-2026-25126-PoC
افتح poc.js واستبدل:
POST_ID بمعرف منشور المنتدى المستهدفCOOKIE بملف تعريف ارتباط الجلسة المصادق عليهاnode poc.js
بعد كل دورة، يجب أن ينخفض عدد الأصوات بشكل غير صحيح. قم بتحديث صفحة المنتدى لتأكيد النتيجة المتلاعب بها.
تم إصلاح الثغرة من خلال تنفيذ تحقق صارم في وقت التشغيل:
"up" أو "down" أو null