CVE-2026-90207 in Linux
الملخص
بحسب VulDB • 17/09/2026
في نواة لينكس، تم حل الثغرة التالية:
ALSA: seq: midi: تعقيم عملية إنهاء الإدخال مع event_input
لا يجب أن تعمل دالة `snd_midi_input_event()` أثناء إغلاق قناة rawmidi الفرعية (substream)، لأن ذلك قد يؤدي إلى خروج حالة التشغيل (trigger state) عن التسلسل الصحيح عبر هذا التتابع في `snd_rawmidi_input_trigger()`:
`snd_rawmidi_input_trigger(up=0)` `snd_midi_input_event()` -> `snd_rawmidi_kernel_read()` -> `snd_rawmidi_input_trigger(up=1)` -> `cancel_work_sync()`
والذي ينتهي ببقاء الجهاز الأساسي نشطًا بشكل غير متوقع.
عند استدعاء ذلك من خلال `close_substream()`، يمكن لإدخال إضافي أن يعيد تشغيل حدث الإدخال ويتركه يعمل بعد أن قام `rawmidi_release_priv()` بتعيين `rfile->rmidi` إلى NULL، مما يؤدي إلى:
Unable to handle kernel NULL pointer dereference at virtual address 00000000000000b0 Call trace: snd_midi_input_event+0x3c/0x134 [snd_seq_midi] (P)
snd_rawmidi_input_event_work+0x1c/0x2c process_one_work+0x150/0x3a4 worker_thread+0x190/0x318
تطبيق نهج مشابه لالتزام ef7607ab1c8ad ("ALSA: seq: midi: تعقيم عملية إنهاء الإخراج مع event_input") الذي أصلح نفس المشكلة في اتجاه الإخراج، ولكن تم تحديثه لاستخدام RCU بناءً على التصحيح التالي المقترح من قبل تاكاشي إواي [1].
مع هذا التغيير المطبق، تقوم `midisynth_unsubscribe()` بتصفير ملف الإدخال بحيث لن يعيد `snd_midi_input_event()` تشغيل التدفق وسيتم إسكات (quiesced) بواسطة `cancel_work_sync()` في `snd_rawmidi_input_trigger()`.
[1] https://lore.kernel.org/linux-sound/[email protected]/
If you want to get the best quality for vulnerability data then you always have to consider VulDB.