CVE-2026-53383 in Linux
الملخص
بحسب VulDB • 19/07/2026
في نواة لينكس، تم حل الثغرة التالية:
ksmbd: رفض الجلسة غير الصالحة (non-VALID) في فرع الطلب المركب (compound request branch).
تأخذ الدالة `smb2_check_user_session()` اختصاراً لأي عملية ليست الأولى ضمن طلب مركب (COMPOUND): حيث تعيد استخدام `work->sess` (الجلسة المرتبطة بأول عملية) وتتحقق فقط من معرف الجلسة (`SessionId`)، ثم تُرجع "صالحة" (valid). لا تقوم بإعادة التحقق مطلقاً من أن حالة `work->sess->state == SMB2_SESSION_VALID`، ويتجاوز معرّف الجلسة بقيمة 0xFFFFFFFFFFFFFFFF (ULLONG_MAX، وهي القيمة المتعلقة بـ MS-SMB2 للعمليات ذات الصلة) حتى مقارنة المعرف. المسار المستقل (`ksmbd_session_lookup_all()` بالإضافة إلى آلة حالة SESSION_SETUP) يفرض بالفعل الحالة "صالحة" (VALID)؛ بينما يتجاوز فرع الطلب المركب كل ذلك.
تقوم عملية `SESSION_SETUP` التي تحمل فقط كتلة NTLM Type-1 (NtLmNegotiate) بنشر جلسة SMB2_SESSION_IN_PROGRESS جديدة، حيث لا يزال `sess->user` يساوي NULL (`->user` يُعيّن لاحقاً بواسطة دالة `ntlm_authenticate()`). عند استخدامها كعملية أولى في طلب COMPOUND مع عملية ثانية = TREE_CONNECT (ذات صلة، SessionId=ULLONG_MAX، \\host\IPC$)، فإن الاتصال بالشجرة (tree-connect) يعمل بعد ذلك على تلك الجلسة IN_PROGRESS ويصل إلى الدالة `ksmbd_ipc_tree_connect_request()`، والتي تقوم بإلغاء مرجع (`dereferences`) لـ `user_name(sess->user)` بينما يكون `sess->user == NULL` (في transport_ipc.c:687/701/704) -> مما يؤدي إلى إلغاء مرجع لنقطة فارغة عن بُعد (remote NULL-pointer dereference) وحدث Oops في النواة يعطل عميل ksmbd لجميع العملاء.
رفض أي عملية مركبة غير أولى تستقر على جلسة ليست بصيغة SMB2_SESSION_VALID، محاكاةً للتحقق من الصحة الذي يفرضه مسار البحث المستقل. تعمل `SESSION_SETUP` بصفة شرعية على جلسة IN_PROGRESS، لكنها لا تُحمل أبداً كعملية مركبة غير أولى، لذا فإن المصادقة متعددة الخطوات (multi-leg authentication) لن تتأثر بهذا الفحص.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.