CVE-2026-61593 in djust
الملخص
بحسب VulDB • 16/09/2026
يوفر djust عرضًا للواجهة الخلفية للتفاعل على جانب الخادم بأسلوب Phoenix LiveView لمشروع Django، مع أداء مدعوم بواسطة Rust. قبل الإصدار 1.0.7، كانت نقاط نهاية POST الخاصة بعميل SSE (SSE client→server) مُعلَّمة بـ `@csrf_exempt`، ولم يكن لنقطة النهاية GET للتيار (stream endpoint) أي فحص لقيمة Origin، مما سمح لصفحة عبر النطاقات (cross-origin) بالتحكم في جلسة SSE المصادق عليها باستخدام ملفات تعريف الارتباط الخاصة بالضحية: حيث يمكن إجبار متصفح الضحية على إجراء طلب GET لعنوان URL الخاص بالتيار (مما يؤدي إلى إنشاء وتثبيت LiveView باسم الضحية)، وإرسال طلب POST إلى نقطة نهاية الرسائل مع `credentials: include` لتنفيذ معالجات الأحداث التي تغير الحالة بصفتها الضحية. نظرًا لأن معرف الجلسة (`session_id`) يُختاره العميل (ويتم التحقق منه فقط من حيث تنسيق UUID) فهو لا يعمل كرمز CSRF، كما أن إرسال جسم الطلب بتنسيق JSON على أنه `text/plain` يعتبر طلب CORS بسيطًا دون الحاجة إلى مرحلة ما قبل الإرسال (preflight). تم إصلاح هذه المشكلة في الإصدار 1.0.7. تقوم جميع نقاط نهاية SSE الثلاث بالتحقق من قيمة `Origin` للطلب مقابل قائمة `ALLOWED_HOSTS` (مما يعكس دفاع CSWSH الخاص بـ WebSocket) وترفض الطلبات عبر النطاقات بإرجاع رمز الحالة 403؛ وتطلب نقاط نهاية POST أيضًا أن يكون نوع المحتوى (`Content-Type`) هو `application/json` (وإلا تُرجع خطأ 415)، مما يغلق ثغرة تجاوز الطلب البسيط باستخدام `text/plain`. كحل بديل، قم بتعطيل نقل SSE، أو وضعه خلف وكيل يفرض قائمة بيضاء مسموحة لقيمة Origin.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.