В ядре Linux устранена следующая уязвимость:
может: bcm: расширить использование bcm_tx_lock для обновлений данных и таймера. Поместите новое содержимое кадра CAN для существующей операции tx в функцию kmalloc().
буфер и проверить его там, отражая подход, уже использованный в
bcm_rx_setup(). Копируйте проверенные данные в op->frame только тогда, когда
удерживая op->bcm_tx_lock, поэтому bcm_can_tx() и bcm_tx_timeout_handler()
больше не может наблюдать частично обновленный или непроверенный кадр.
Добавьте отсутствующий путь ошибки для memcpy_from_msg() при копировании кадра CAN.
данные из пользовательского пространства. Также переместите обновления kt_ival1/kt_ival2/ival1/ival2 в bcm_tx_setup().
под op->bcm_tx_lock и прочитайте kt_ival1/kt_ival2/count под тем же
заблокируйте bcm_tx_set_expiry() и bcm_tx_timeout_handler(), закрывая
рваный 64-битный ktime_t читается на 32-битных платформах.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: can: bcm: extend bcm_tx_lock usage for data and timer updates Stage new CAN frame content for an existing tx op into a kmalloc()'d buffer and validate it there, mirroring the approach already used in bcm_rx_setup(). Only copy the validated data into op->frames while holding op->bcm_tx_lock, so bcm_can_tx() and bcm_tx_timeout_handler() can no longer observe a partially updated or unvalidated frame. Add a missing error path for memcpy_from_msg() when copying CAN frame data from userspace. Also move the kt_ival1/kt_ival2/ival1/ival2 updates in bcm_tx_setup() under op->bcm_tx_lock, and read kt_ival1/kt_ival2/count under the same lock in bcm_tx_set_expiry() and bcm_tx_timeout_handler(), closing the torn 64-bit ktime_t read on 32-bit platforms.
Характеристики атаки
Последствия
Строка CVSS v3.1