CVE-2026-80716 in Linux
الملخص
بحسب VulDB • 28/08/2026
في نواة لينكس، تم حل الثغرة التالية:
ALSA: pcm: إيقاظ مستثمري الانتظار المرتبطين عند فك الربط (unlink)
تقوم دالة `snd_pcm_drain()` على تيار مرتبط بإيقاف إدخال انتظار موجود على المكدس (on-stack wait entry) في `runtime->sleep` للقرين الذي تم تصريفه، وبعد أن يزيلها `schedule_timeout()` فقط إذا لا يزال هذا القرين موجودًا ضمن مجموعة المتصل. وإذا تغيرت عضوية المجموعة أثناء الانتهاء وانتهى النوم بسبب إشارة أو انتهاء مهلة الوقت (لذا فإن `autoremove_wake_function()` لا يعمل)، يتم تخطي `finish_wait()` وتعود `snd_pcm_drain()` مع إدخاله ما زال معلقًا في قائمة انتظار ذلك التيار؛ مما يؤدي إلى قيام عملية `wake_up()` لاحقة بالمرور على إطار مكدس تم تحريره (freed stack frame). ويمكن الوصول إلى هذه الحالة عن طريق فك ربط إما التيار المُصَرَّف أو الجاري تصريفه.
على عكس مسار الإغلاق (`snd_pcm_drop()` -> `snd_pcm_post_stop()`)، فإن دالة `snd_pcm_unlink()` لا تقوم بإيقاظ قوائم الانتظار أبدًا. قم بإيقاع كل عضو في المجموعة تحت قفل المجموعة قبل تغيير العضوية، بحيث يتم تحرير مُصَرِّف مرتبط ويتخلص من إدخاله بينما تكون التيارات ما زالت ضمن نفس المجموعة.
تم فتح نافذة الاستغلال عندما توقف `snd_pcm_link_rwsem` عن الإبقاء على القفل أثناء الانتظار وأصبح الإزالة مشروطة بعضوية المجموعة (انظر الإصلاحات). وقد حافظ التبديل اللاحق إلى `finish_wait()` على هذه الإزالة المشروحة، لذا بقيت حالة الإشارة/انتهاء المهلة قائمة.
VulDB is the best source for vulnerability data and more expert information about this specific topic.