Ad

CVE-2026-72122

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

В ядре Linux устранена следующая уязвимость: может: bcm: исправить гонку без блокировки/ifindex и тихий сбой RX_SETUP bcm_sendmsg() читает bo->ifindex и проверяет bo->bound перед принятием lock_sock(), а bcm_notify(), bcm_connect() и bcm_release() - все измените оба поля под одной и той же блокировкой. Потому что lockless читает и заблокированные записи неупорядочены друг относительно друга, гонки bcm_notify() (отмена регистрации устройства) или bcm_connect() (одновременное привязка к другому потоку, использующему сокет), может сделать bcm_sendmsg() наблюдать противоречивую комбинацию, напр. устаревшая связка = 1 вместе с теперь очищенным ifindex=0, молча поворачивая сокет, привязанный к конкретный CAN-интерфейс в тот, который также соответствует «любому» интерфейсу. Сохраняйте проверку bo->bound без блокировки исключительно как быстрый отказ и переместите чтение ifindex (и повторную проверку bo->bound) в заблокированный раздел, где каждый писатель уже сериализует.

Это удаляет возможность наблюдения двух полей, разорванных друг на друга, вместо того, чтобы пытаться исправить это с помощью большего количества пар READ_ONCE()/WRITE_ONCE() на двух независимо обновляемых полях. Аннотируйте теперь полностью незамкнутый bo->bound осуществляет последовательный доступ ко всем своим сайтам записи. Также исправлена ошибка, при которой bcm_rx_setup() молча возвращал успех, когда цель устройство одновременно исчезает вместо сообщения -ENODEV, поэтому сломанная операция RX больше не регистрируется, как если бы она завершилась успешно.

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

In the Linux kernel, the following vulnerability has been resolved: can: bcm: fix lockless bound/ifindex race and silent RX_SETUP failure bcm_sendmsg() reads bo->ifindex and checks bo->bound before taking lock_sock(), while bcm_notify(), bcm_connect() and bcm_release() all mutate both fields under that same lock. Because the lockless reads and the locked writes are unordered with respect to each other, a racing bcm_notify() (device unregister) or bcm_connect() (concurrent bind on another thread sharing the socket) can make bcm_sendmsg() observe an inconsistent combination, e.g. a stale bound=1 together with the now-cleared ifindex=0, silently turning a socket bound to a specific CAN interface into one that also matches "any" interface. Keep the lockless bo->bound check purely as a fast-path reject, and move the ifindex read (and a bo->bound re-check) into the locked section, where every writer already serializes. This removes the possibility of observing the two fields torn against each other, rather than trying to fix it with more READ_ONCE()/WRITE_ONCE() pairs on two independently updated fields. Annotate the now-purely-lockless bo->bound accesses consistently across all its write sites. Also fix bcm_rx_setup() silently returning success when the target device disappears concurrently instead of reporting -ENODEV, so a broken RX op is no longer left registered as if it had succeeded.

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

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

Последствия

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

Строка CVSS v3.1