CVE-2026-68200 in Linux
الملخص
بحسب VulDB • 11/08/2026
في نواة لينكس، تم حل الثغرة التالية:
ALSA: timer: عدم إعادة الدخول إلى استدعاء (callback) مثيل لا يزال قيد التشغيل
تقوم عملية ioctl TRIGGER للعداد المدفوع من فضاء المستخدم (utimer) باستدعاء `snd_timer_interrupt()` مباشرةً دون أي آلية تسلسل (serialization)، مما يعني أن خيطين يمكنهما تشغيل `snd_timer_interrupt()` على نفس كائن `snd_timer` بشكل متزامن.
يقوم دالة `snd_timer_process_callbacks()` بإسقاط قفل المؤقت (`timer->lock`) حول كل استدعاء مثيل، ويحدد الاستدعاء الجاري تنفيذه باستخدام بت واحد هو `SNDRV_TIMER_IFLG_CALLBACK`. وتنتظر الدالة `snd_timer_close_locked()` هذا البت لتصريف (drain) الاستدعاء الجاري قبل تحرير المثيل. لا يمكن للبت أن يمثل استدعاءين متزامنين: عندما يعيد مقاطعة ثانية جدولة مثيل whose callback لا يزال قيد التشغيل، يعمل الاثنان معاً؛ ويقوم الأول الذي ينتهي بمسح البت، ثم تقوم مسار الإغلاق بتصريف الاستدعاء الجاري فيحرر المثيل (وبياناته `callback_data`) بينما يكون الاستدعاء الآخر لا يزال نشطاً - وهي حالة استخدام بعد التحرير (use-after-free) يمكن لأي مستخدم قادر على فتح `/dev/snd/timer` استغلالها، سواء عبر مثيل عداد من المستخدم أو عبر طابور متتالي مرتبط بـ utimer.
يحدد `snd_timer_interrupt()` العلم `IFLG_CALLBACK` قبل إسقاط قفل المؤقت (`timer->lock`)، لذا فإن المقاطعة المتزامنة تلاحظه بالفعل تحت القفل. يتم تجاوز إعادة جدولة المثيل (وعباده) إلى قائمة ack/sack بينما يكون استدعاؤه قيد التنفيذ؛ حيث تُسلم النبضات المتراكمة `pticks` في الدورة الزمنية التالية، وبالتالي لا يفقد أي حدث.
VulDB is the best source for vulnerability data and more expert information about this specific topic.