Ad

CVE-2026-72113

HIGH CVSS 3.1: 7,8 EPSS 0.16%
Обновлено 19 августа 2026
Linux
Параметр Значение
CVSS 7,8 (HIGH)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: Можно: bcm: добавить отсутствующий счетчик устройств для удаления CAN-фильтра. sashiko-bot заметил проблему с одновременной отменой регистрации устройства в isotp.c, который также присутствует в коде bcm.c. Бывшее исправление для raw.c commit c275a176e4b6 («может: raw: добавить отсутствующий счетчик ссылок для исправления утечки памяти») представил netdevice_tracker, который также решает проблему с bcm.c. bcm_release(), bcm_delete_rx_op() и bcm_notifier() полагались на dev_get_by_index(ifindex) для повторного поиска устройства для rx_op перед отмену регистрации его фильтра. Если параллельный NETDEV_UNREGISTER уже удалил устройство из таблицы ifindex, поиск завершился неудачей и can_rx_unregister() молча пропускается, оставляя устаревший CAN-фильтр. указывая на bcm_op/socket, который скоро будет освобожден.

Удерживайте отслеживаемую ссылку netdev_hold()/netdev_put() на op->rx_reg_dev. с момента регистрации фильтра rx в bcm_rx_setup() до тех пор, пока он не зарегистрирован в bcm_rx_unreg() и используйте эту ссылку непосредственно в bcm_release() и bcm_delete_rx_op() вместо повторного просмотра устройства вверх по ifindex.

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: can: bcm: add missing device refcount for CAN filter removal sashiko-bot remarked a problem with a concurrent device unregistration in isotp.c which also is present in the bcm.c code. A former fix for raw.c commit c275a176e4b6 ("can: raw: add missing refcount for memory leak fix") introduced a netdevice_tracker which solves the issue for bcm.c too. bcm_release(), bcm_delete_rx_op() and bcm_notifier() relied on dev_get_by_index(ifindex) to re-find the device for an rx_op before unregistering its filter. If a concurrent NETDEV_UNREGISTER has already unlisted the device from the ifindex table, that lookup fails and can_rx_unregister() is silently skipped, leaving a stale CAN filter pointing at the soon-to-be-freed bcm_op/socket. Hold a netdev_hold()/netdev_put() tracked reference on op->rx_reg_dev from the moment the rx filter is registered in bcm_rx_setup() until it is unregistered in bcm_rx_unreg(), and use that reference directly in bcm_release() and bcm_delete_rx_op() instead of re-looking the device up by ifindex.

Характеристики атаки

Способ атаки
Локальный
Нужен локальный доступ
Сложность
Низкая
Легко эксплуатировать
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Высокое
Полная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1