CVE-2026-22995 in Linux
الملخص
بحسب VulDB • 31/05/2026
في نواة لينكس، تم حل الثغرة التالية:
ublk: إصلاح استخدام بعد التحرير (use-after-free) في ublk_partition_scan_work
توجد حالة سباق (race condition) بين عمل فحص المقسمات غير المتزامن (async partition scan work) وإيقاف تشغيل الجهاز (device teardown)، مما قد يؤدي إلى استخدام بعد التحرير (use-after-free) للعنصر ub->ub_disk:
1. تقوم ublk_ctrl_start_dev() بجدولة عمل partition_scan_work بعد استدعاء add_disk(). 2. تستدعي ublk_stop_dev() الدالة ublk_stop_dev_unlocked() التي تقوم بما يلي: - del_gendisk(ub->ub_disk) - ublk_detach_disk() تعيين ub->ub_disk = NULL - put_disk() والتي قد تؤدي إلى تحرير القرص (disk). 3. يقوم العامل (worker) ublk_partition_scan_work() بعد ذلك بالإشارة إلى ub->ub_disk، مما يؤدي إلى حدوث استخدام بعد التحرير (UAF).
تم إصلاح هذه المشكلة باستخدام الدالتين ublk_get_disk()/ublk_put_disk() في العامل للحفاظ على مرجع (reference) للقرص أثناء فحص المقسمات. تقوم قفل اللف (spinlock) الموجود في ublk_get_disk() بمزامنة العملية مع ublk_detach_disk()، مما يضمن حصول العامل إما على مرجع صالح أو رؤية قيمة NULL والخروج مبكراً.
كما تم تغيير flush_work() إلى cancel_work_sync() لتجنب تشغيل عمل فحص المقسمات بشكل غير ضروري عندما يكون القرص مفصولاً بالفعل.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.