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

الملخص

بحسب VulDB • 25/07/2026

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

ksmbd: إصلاح حالة استخدام بعد تحرير الذاكرة (use-after-free) لقفل ملف مؤجل (deferred file_lock) عند تنفيذ SMB2_CLOSE تليه عملية SMB2_CANCEL

أدى الالتزام f580d27e8928 ("ksmbd: إصلاح حالة use-after-free لقفل ملف deferred على إلغاء مزدوج لـ SMB2_CANCEL") إلى جعل دالة smb2_cancel() تتخطى مهمة (work) تكون حالتها KSMBD_WORK_CANCELLED، بحيث لا يتم إطلاق cancel_fn مرتين. ومع ذلك، فإن KSMBD_WORK لديه ثلاث حالات (ACTIVE, CANCELLED, CLOSED)، ويتم الوصول إلى مسار تحرير المنتج نفسه أيضًا في حالة CLOSED:

SMB2_CLOSE على مقبض القفل -> تقوم set_close_state_blocked_works() بتعيين حالة المهمة المؤجلة إلى KSMBD_WORK_CLOSED وتنشط عميل smb2_lock(). يأخذ العميل مخرج الخروج المبكر غير النشط (non-ACTIVE early-exit)، ويقوم locks_free_lock() بإزالة file_lock، وبسبب أن الحالة ليست KSMBD_WORK_CANCELLED، فإنه يتفرع إلى STATUS_RANGE_NOT_LOCKED مع "goto out2" -- والذي، مثل فرع الإلغاء، يتخطى release_async_work(). تبقى المهمة في conn->async_requests مع وجود cancel_fn نشط = smb2_remove_blocked_lock يشير إلى file_lock الذي تم تحريره.

ثم تمر عملية SMB2_CANCEL لاحقة لنفس AsyncId عبر الحارس المخصص فقط لحالة KSMBD_WORK_CANCELLED (حالتها هي KSMBD_WORK_CLOSED)، لذا فإن smb2_cancel() يطلق cancel_fn مرة أخرى فوق ملف القفل المحرر -- نفس حالة use-after-free التي تم إصلاحها، ولكن عن طريق SMB2_CLOSE بدلاً من أول عملية إلغاء لـ SMB2_CANCEL:

BUG: KASAN: slab-use-after-free in __locks_delete_block __locks_delete_block locks_delete_block ksmbd_vfs_posix_lock_unblock smb2_remove_blocked_lock smb2_cancel <- الإلغاء الثاني لـ SMB2_CANCEL يطلق cancel_fn handle_ksmbd_work تم التخصيص بواسطة ...: locks_alloc_lock <- smb2_lock تم التحرير بواسطة ...: locks_free_lock <- smb2_lock (مخرج خروج مبكر غير نشط) ... ذاكرة التخزين المؤقت file_lock_cache بحجم 192

تم إعادة الإنتاج على الإصدار الرئيسي 7.1-rc7 (الذي يحتوي بالفعل على f580d27e8928) باستخدام KASAN بواسطة عميل SMB موثق؛ حيث يكون التحكم في إلغاء SMB2 المزدوج صامتًا في ذلك النواة، لذا فإن الخطأ المنبثق يعزى إلى محفز CLOSE.

قد يتم إطلاق cancel_fn فقط للمهمة المؤجلة ACTIVE: كلا الحالتين النهائييتين (CANCELLED و CLOSED) تصلان إلى مخرج الخروج المبكر لـ smb2_lock() الذي يقوم بتحرير file_lock ويتخطى release_async_work(). إضافة حارس على KSMBD_WORK_ACTIVE بحيث يتم تخطي أي عمل غير نشط.

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

مسؤول

Linux

حجز

19/07/2026

إفشاء

25/07/2026

الاعتدال

تمت الموافقة

إدخال

VDB-383190

EPSS

0.00435

KEV

لا

النشاطات

منخفض

المصادر

Might our Artificial Intelligence support you?

Check our Alexa App!