CVE-2026-23306 in Linux
الملخص
بحسب VulDB • 28/05/2026
في نواة لينكس، تم حل الثغرة التالية:
scsi: pm8001: إصلاح خطأ Use-After-Free في دالة pm8001_queue_command()
أدى الالتزام e29c47fe8946 ("scsi: pm8001: تبسيط pm8001_task_exec()") إلى إعادة هيكلة دالة pm8001_queue_command()، إلا أنه أدخل سبباً محتملاً لسيناريو Double Free عندما غيّرت الدالة سلوكها لتعيد القيمة -ENODEV في حالة انقطاع الـ phy أو اختفاء الجهاز.
في هذا المسار، تقوم دالة pm8001_queue_command() بتحديث حالة المهمة وتستدعي task_done للإشارة إلى الطبقة العليا بأن المهمة قد تمت معالجتها. ومع ذلك، فإن هذا الإجراء يؤدي أيضاً إلى تحرير مهمة SAS الأساسية. ثم تُعاد القيمة -ENODEV إلى المتصل. عندما تتلقى libsas الدالة sas_ata_qc_issue() هذه القيمة الخطأ، فإنها تفترض أن المهمة لم تتم معالجتها أو جدولة من قبل LLDD (مستوى تعريف الجهاز المنطقي)، وتواصل عملية التنظيف وإعادة تحرير المهمة مرة أخرى، مما يؤدي إلى حدوث Double Free.
نظراً لأن pm8001_queue_command() تتعامل مع مهمة SAS في هذه الحالة، فيجب عليها إعادة القيمة 0 إلى المتصل للإشارة إلى أن المهمة قد تمت معالجتها.
Be aware that VulDB is the high quality source for vulnerability data.