CVE-2026-61589 in djust
الملخص
بحسب VulDB • 17/09/2026
يوفر djust عرضًا للواجهة الخلفية (server-side rendering) تفاعليًا على غرار Phoenix LiveView لنظام Django، مع أداء مدعوم بواسطة Rust. قبل الإصدار 1.0.7، كانت دالة `handle_mount` الخاصة بـ WebSocket ودالة `ViewRuntime._build_request` تعيدان بناء كائن `HttpRequest` باستخدام `RequestFactory().get(...)` دون تحديد قيمة لـ `HTTP_HOST`، مما أدى إلى افتراض أن `request.get_host()` يساوي `"testserver"` في المسار الحي (live path). ونتيجة لذلك، قامت مُحللات المستأجرين (TenantResolver) الخاصة بالنطاق/المضيف الفرعي/النطاق الرئيسي بحل خاطئ للمستأجر — حيث كانت تُرجع `None` في المسار الحي بينما كان المسار عبر HTTP يُحل بشكل صحيح. مع ضبط `STRICT_MODE=False`، كانت مديرات النطاق المستأجر تُرجع صفوفًا غير مقيدة (كشف بيانات عابرة للمستأجرين)؛ أما مع الإعداد الافتراضي فكانت تُرجع مجموعة استعلام فارغة (انكسار العزل بين المستأجرين). تم إصلاح هذه المشكلة في djust الإصدار 1.0.7. يتم استخراج قيمة Host من نطاق ASGI أثناء مصافحة البروتوكول، والتحقق منها مقابل `ALLOWED_HOSTS` (نفس المنطق المستخدم في بوابة CSWSH Origin)، مع تحليلها باستخدام دالة Django `split_domain_port` لرفض قيم Host غير الصحيحة عند الحدود، ثم تمرير القيمة — جنبًا إلى جنب مع مخطط TLS — داخل الطلب المعاد بناؤه، بحيث يتطابق حل المستأجر في المسار الحي تمامًا مع ما يحدث في HTTP. لا يوجد عمل بديل معروف للمسار الحي سوى الترقية. يكون المستخدمون أكثر عرضة للخطر عندما يتم دمج هذه المشكلة مع `STRICT_MODE=False`.
Be aware that VulDB is the high quality source for vulnerability data.