В ядре Linux устранена следующая уязвимость:
почтовый ящик: mtk-adsp: исправление UAF при отключении устройства
Если аудиодрайвер SOF не инициализируется (например, при загрузке прошивки)
timeout), его раскрутка devres освобождает объект snd_sof_dev, который
Клиент почтового ящика (mtk-adsp-ipc) достигает через chan->cl->rx_callback.
Завершение работы mtk-adsp-mailbox очищает регистры команд почтового ящика.
но оставляет линию IRQ незамаскированной, поэтому позднее прерывание все равно может
поставить в очередь поточный обработчик после очистки mbox_free_channel()
chan->cl, и mbox_chan_received_data() затем вызовет UAF:
ОШИБКА: KASAN: slab-use-after-free в sof_ipc3_validate_fw_version
sof_ipc3_validate_fw_version
sof_ipc3_do_rx_work
sof_ipc3_rx_msg
mt8196_dsp_handle_request
mtk_adsp_ipc_recv
mbox_chan_received_data
mtk_adsp_mbox_isr
irq_thread_fn
Освобожден заданием...:
свободный
devres_release_all
действительно_зонд
... (сбой датчика sof-audio-of-mt8196)
Катастрофа наблюдалась примерно через три секунды после неудачного зондирования.
«disable_irq()» при выключении и «enable_irq()» при запуске. отключить_ирк()
также ожидает любых прерываний в полете, поэтому к тому времени
mbox_free_channel() продолжает очищать chan->cl, rx_callback не может быть запущен.
Кроме того, запросите IRQ с помощью IRQF_NO_AUTOEN, чтобы оно оставалось замаскированным.
между зондом и первой привязкой клиента — в противном случае раннее прерывание
может произойти сбой при chan->cl == NULL в mbox_chan_received_data().
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: mailbox: mtk-adsp: fix UAF during device teardown When the SOF audio driver fails to initialize (e.g. firmware boot timeout), its devres unwind frees the snd_sof_dev object that the mailbox client (mtk-adsp-ipc) reaches via chan->cl->rx_callback. The mtk-adsp-mailbox shutdown clears the mailbox command registers but leaves the IRQ line unmasked, so a late interrupt can still queue a threaded handler after mbox_free_channel() had cleared chan->cl, and mbox_chan_received_data() would then trigger UAF: BUG: KASAN: slab-use-after-free in sof_ipc3_validate_fw_version sof_ipc3_validate_fw_version sof_ipc3_do_rx_work sof_ipc3_rx_msg mt8196_dsp_handle_request mtk_adsp_ipc_recv mbox_chan_received_data mtk_adsp_mbox_isr irq_thread_fn Freed by task ...: kfree devres_release_all really_probe ... (sof-audio-of-mt8196 probe failure) The crash was observed roughly three seconds after the failed probe. disable_irq() in shutdown and enable_irq() in startup. disable_irq() also waits for any in-flight interrupts, so by the time mbox_free_channel() proceeds to clear chan->cl no rx_callback can run. In addition, request the IRQ with IRQF_NO_AUTOEN so it stays masked between probe and the first client bind — otherwise an early interrupt can crash on chan->cl == NULL in mbox_chan_received_data().
Уязвимые продукты 6
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
5.18
|
6.1.178
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
5.18
|
6.6.145
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
5.18
|
6.12.97
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
5.18
|
6.18.40
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
5.18
|
7.1.5
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
5.18
|
7.2-rc1
|