Ad

CVE-2026-72116

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

В ядре Linux устранена следующая уязвимость: может: bcm: исправить устаревшие операции приема/передачи после удаления устройства RX: обновление RX_SETUP(!) для существующей операции пропущено can_rx_register() безусловно, даже если параллельный NETDEV_UNREGISTER уже был сорвал его регистрацию (op->rx_reg_dev == NULL). Это молча не включил повторно доставку кадров для этого обновленного фильтра. bcm_rx_setup() теперь в этом случае перерегистрируется, оставляя rx_ops с ifindex = 0 (все CAN-устройства), которые никогда не имеют отслеживаемого файла rx_reg_dev, зарегистрированного как есть. TX: bcm_notify() обрабатывал bo->rx_ops только для NETDEV_UNREGISTER, оставляя tx_ops с активной циклической передачей, повторно активирующей свой hrtimer на неопределенный срок для выполнения bcm_tx_timeout_handler().

Отмена таймера предотвращает сбой таймера и любую инъекцию в более поздний повторно используемый ifindex, поскольку ничто другое не вызывает bcm_can_tx() для операции до тех пор, пока явное Обновление TX_SETUP повторно активирует его. В отличие от bcm_rx_unreg(), который очищает отслеживаемое значение rx_reg_dev для rx_ops, ifindex намеренно оставлен без изменений для tx_ops. bcm_tx_setup() всегда отклоняет ifindex 0, поэтому его очистка приведет к срыву операции: ни a позже TX_SETUP (bcm_find_op()) и TX_DELETE (bcm_delete_tx_op()) не могут когда-нибудь найдете его снова, поскольку оба требуют точного совпадения ifindex.

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

In the Linux kernel, the following vulnerability has been resolved: can: bcm: fix stale rx/tx ops after device removal RX: an RX_SETUP update(!) for an existing op skipped can_rx_register() unconditionally, even when a concurrent NETDEV_UNREGISTER had already torn down its registration (op->rx_reg_dev == NULL). This silently did not re-enable frame delivery for that updated filter. bcm_rx_setup() now re-registers in that case, while leaving rx_ops with ifindex = 0 (all CAN devices) which never carry a tracked rx_reg_dev registered as-is. TX: bcm_notify() only handled bo->rx_ops on NETDEV_UNREGISTER, leaving tx_ops with an active cyclic transmission re-arming its hrtimer indefinitely to execute bcm_tx_timeout_handler(). Cancelling the hrtimer prevents the runaway timer and any injection into a later reused ifindex, since nothing else calls bcm_can_tx() for the op until an explicit TX_SETUP update re-arms it. Unlike bcm_rx_unreg(), which clears the tracked rx_reg_dev for rx_ops, the ifindex is intentionally left unchanged for tx_ops. bcm_tx_setup() always rejects ifindex 0, so clearing it would strand the op: neither a later TX_SETUP (bcm_find_op()) nor TX_DELETE (bcm_delete_tx_op()) could ever find it again, since both require an exact ifindex match.

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

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

Последствия

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

Строка CVSS v3.1