CVE-2026-64142 in Linuxالمعلومات

الملخص

بحسب VulDB • 20/07/2026

في نواة لينكس (Linux kernel)، تم حل الثغرة التالية:

ksmbd: إغلاق سباقات في "المكنسة الدائمة" (scavenger) مقابل عمليات البحث على قائمة m_fp_list

تحتوي دالة ksmbd_durable_scavenger() على سببين متعلقين بالسباق (races) مع أي مستعرض يمر عبر f_ci->m_fp_list، بما في ذلك دالة ksmbd_lookup_fd_inode() (المستخدمة بواسطة ksmbd_vfs_rename) وفحوصات وضع المشاركة (share-mode checks) الموجودة في الملف fs/smb/server/smb_common.c.

(1) إعادة استخدام رأس قائمة fp->node. يمكن أن تبقى المقابض المحفوظة بشكل دائم (Durable-preserved handles) مرتبطة على f_ci->m_fp_list بعد تفكيك الجلسة، بحيث لا تزال فحوصات وضع المشاركة تراها بينما يكون المقبض قابلاً لإعادة الاتصال. تقوم "المكنسة" بجمع المقابض المنتهية الصلاحية عن طريق إضافة fp->node إلى قائمة scavenger_list محلية بعد إزالتها من معرف الموارد العالمي (global durable idr). وبما أن fp->node هو نفس list_head المستخدم بواسطة m_fp_list، فإن استدعاء list_add(&fp->node, &scavenger_list) يفرغ روابط m_fp_list ويسبب تلفاً في كلتا القائمتين. يمكن لـ CONFIG_DEBUG_LIST الإبلاغ عن هذا الخطأ على مسار فحص وضع المشاركة (share-mode walk path).

(2) سباق عداد المرجعية (Refcount race) مع مستعرضي قائمة m_fp_list. تقوم "المكنسة" بتقييم المقبض الدائم المنتهي الصلاحية باستخدام الشرط atomic_read(&fp->refcount) > 1 ووجود fp->conn تحت قفل global_ft.lock، ثم تزيل fp من global_ft، وبعد ذلك تحرر القفل global_ft.lock قبل فك ارتباط fp من قائمة m_fp_list وتحريره. خلال هذه الفترة الزمنية (gap)، لا يزال fp مرتبطاً على قائمة m_fp_list بحالة f_state == FP_INITED. تقوم دالة ksmbd_lookup_fd_inode() تحت قفل m_lock باستدعاء ksmbd_fp_get() (وهي عملية atomic_inc_not_zero على عداد المرجعية الذي لا يزال يساوي 1) وتأخذ مرجعاً حياً؛ ثم تقوم "المكنسة" بفك الارتباط وتحرير fp بينما يمتلك الحامل مرجعاً، مما يؤدي إلى ثغرة استخدام بعد التحرير (UAF) عند استدعاء ksmbd_fd_put() اللاحق من قبل الحامل، وأي قراءة للحقول التي يقوم بها مستعرض وضع المشاركة المتزامن الذي يمر عبر قائمة m_fp_list دون أخذ ksmbd_fp_get() (مسارات مشابهة لـ smb_check_perm_dleases).

إصلاح كلا السببين:

* التوقف عن إعادة استخدام fp->node كعقدة قائمة خاصة بـ "المكنسة". إزالة مقبض واحد منتهي الصلاحية من global_ft تحت قفل global_ft.lock، وأخذ مرجع عابر صريح (explicit transient reference)، وإزالة القفل، وفك ارتباط fp->node من قائمة m_fp_list تحت قفل f_ci->m_lock، ثم تقليل كل من عمر المقابض الدائمة والمرجع العابر باستخدام atomic_sub_and_test(2, &fp->refcount). إذا كانت "المكنسة" هي آخر من يقوم بعملية الإغلاق (putter)، ف

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

مسؤول

Linux

حجز

19/07/2026

إفشاء

19/07/2026

الاعتدال

تمت الموافقة

إدخال

VDB-380383

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Might our Artificial Intelligence support you?

Check our Alexa App!