bridge: mcast: Fix use-after-free during router port configuration
Оценка Noroxi
Приоритет: Наблюдать (оценка срочности 31/100)
- Есть публичный код proof-of-concept (GitHub); записей об эксплуатации в реальных атаках нет.
- Вероятность эксплуатации в ближайшие 30 дней: 0,30% (FIRST EPSS).
- Может быть вызвана пользователем с локальным доступом к системе. Достаточно учётной записи с низкими привилегиями. Действия пользователя не требуются. Особые условия не требуются; воспроизводится стабильно.
- Исправленная версия: Linux Linux 4d3c2a1d4c7c33103f1ddfdbc5cfe1ea4f6d0dcd, 7544f3f5b0b58c396f374d060898b5939da31709, bdced577da71b118b6ed4242ebd47f81bf54d406; cbl2 kernel 5.15.202.1-1 on CBL-Mariner 2.0 Release Notes.
Пока низкий приоритет. Обновитесь до Linux Linux 4d3c2a1d4c7c33103f1ddfdbc5cfe1ea4f6d0dcd, 7544f3f5b0b58c396f374d060898b5939da31709, bdced577da71b118b6ed4242ebd47f81bf54d406; cbl2 kernel 5.15.202.1-1 on CBL-Mariner 2.0 Release Notes или новее.
Формируется автоматически по данным записи: CVSS (NVD и CNA), CISA KEV и SSVC, FIRST EPSS, источники эксплойтов, исправленные версии. Как мы считаем
Первоисточники: NVD · CVE.org · FIRST EPSS
In the Linux kernel, the following vulnerability has been resolved: bridge: mcast: Fix use-after-free during router port configuration The bridge maintains a global list of ports behind which a multicast router resides. The list is consulted during forwarding to ensure multicast packets are forwarded to these ports even if the ports are not member in the matching MDB entry. When per-VLAN multicast snooping is enabled, the per-port multicast context is disabled on each port and the port is removed from the global router port list: # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 # ip link add name dummy1 up master br1 type dummy # ip link set dev dummy1 type bridge_slave mcast_router 2 $ bridge -d mdb show | grep router router ports on br1: dummy1 # ip link set dev br1 type bridge mcast_vlan_snooping 1 $ bridge -d mdb show | grep router However, the port can be re-added to the global list even when per-VLAN multicast snooping is enabled: # ip link set dev dummy1 type bridge_slave mcast_router 0 # ip link set dev dummy1 type bridge_slave mcast_router 2 $ bridge -d mdb show | grep router router ports on br1: dummy1 Since commit 4b30ae9adb04 ("net: bridge: mcast: re-implement br_multicast_{enable, disable}_port functions"), when per-VLAN multicast snooping is enabled, multicast disablement on a port will disable the per-{port, VLAN} multicast contexts and not the per-port one. As a result, a port will remain in the global router port list even after it is deleted. This will lead to a use-after-free [1] when the list is traversed (when adding a new port to the list, for example): # ip link del dev dummy1 # ip link add name dummy2 up master br1 type dummy # ip link set dev dummy2 type bridge_slave mcast_router 2 Similarly, stale entries can also be found in the per-VLAN router port list. When per-VLAN multicast snooping is disabled, the per-{port, VLAN} contexts are disabled on each port and the port is removed from the per-VLAN router port list: # ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 1 mcast_vlan_snooping 1 # ip link add name dummy1 up master br1 type dummy # bridge vlan add vid 2 dev dummy1 # bridge vlan global set vid 2 dev br1 mcast_snooping 1 # bridge vlan set vid 2 dev dummy1 mcast_router 2 $ bridge vlan global show dev br1 vid 2 | grep router router ports: dummy1 # ip link set dev br1 type bridge mcast_vlan_snooping 0 $ bridge vlan global show dev br1 vid 2 | grep router However, the port can be re-added to the per-VLAN list even when per-VLAN multicast snooping is disabled: # bridge vlan set vid 2 dev dummy1 mcast_router 0 # bridge vlan set vid 2 dev dummy1 mcast_router 2 $ bridge vlan global show dev br1 vid 2 | grep router router ports: dummy1 When the VLAN is deleted from the port, the per-{port, VLAN} multicast context will not be disabled since multicast snooping is not enabled on the VLAN. As a result, the port will remain in the per-VLAN router port list even after it is no longer member in the VLAN. This will lead to a use-after-free [2] when the list is traversed (when adding a new port to the list, for example): # ip link add name dummy2 up master br1 type dummy # bridge vlan add vid 2 dev dummy2 # bridge vlan del vid 2 dev dummy1 # bridge vlan set vid 2 dev dummy2 mcast_router 2 Fix these issues by removing the port from the relevant (global or per-VLAN) router port list in br_multicast_port_ctx_deinit(). The function is invoked during port deletion with the per-port multicast context and during VLAN deletion with the per-{port, VLAN} multicast context. Note that deleting the multicast router timer is not enough as it only takes care of the temporary multicast router states (1 or 3) and not the permanent one (2). [1] BUG: KASAN: slab-out-of-bounds in br_multicast_add_router.part.0+0x3f1/0x560 Write of size 8 at addr ffff888004a67328 by task ip/384 [...] Call Trace: <TASK> dump_stack ---truncated---
- Опубликовано
- 9 июл. 2025 г.
- Обновлено
- 5 авг. 2026 г.
- EPSS
- 0,3 % · 21-й процентиль
- CWE
- CWE-416
Инструменты для отчёта
Оценка срочности
31
Наблюдать
Пока низкий приоритет.
- CVSS
- 31 / 40 · 7.8 / 10
- CISA KEV
- 0 / 30 · Нет в списке
- EPSS
- 0 / 30 · 0,3 %
Решение CISA SSVC
- Эксплуатация
- нет
- Автоматизируемо
- нет
- Техническое влияние
- полное
Vulnrichment: входные данные дерева решений CISA.
Оценка CNA и NVD
- NVD
- 7,8
- CNA · Linux
- 7,8
- совпадают
Оценка присваивающего органа и независимая оценка NVD. Разрыв означает, что критичность спорна.
Узнайте, когда запись изменится
- Нет в KEV: эксплуатация в реальных атаках не зафиксирована
- Есть PoC, боевого модуля нет
- Исправление выпущено
Если что-то из этого изменится, сообщим в ежедневной сводке.
У вас WordPress? Проверьте сайт бесплатно в WP Lens
Анализ Noroxi
Что это значит для вашей инфраструктуры?
Оценка выше формируется автоматически по данным записи и не знает вашей среды. Наша команда проверит на ваших системах, действительно ли уязвимость эксплуатируема и какой меры достаточно.
Мы используем этот продукт, нужна помощьЗатронутые системы
Затронута ли ваша версия?
Выберите продукт и введите свою версию. Она сравнивается с диапазонами этой записи прямо в браузере и никуда не отправляется.
| Вендор | Продукт | CPE |
|---|---|---|
| linux | linux kernel | cpe:2.3:o:linux:linux_kernel |
Затронутые версии
Диапазоны версий NVD (для продуктов из каталога). Добавьте продукт в стек с версией, и сопоставление будет по ним.
- linux linux kernel5.15 и новее · до 6.15.5
- linux linux kernel6.16
Версии, заявленные вендором
Диапазоны затронутых версий, заявленные назначающей организацией (Linux). Не зависят от анализа CPE в NVD и обычно опережают его.
Linux Linux
- 5.15затронута
- 2796d846d74a18cc6563e96eff8bf28c5e06f912 и новее · до 4d3c2a1d4c7c33103f1ddfdbc5cfe1ea4f6d0dcdзатронута · git
- 2796d846d74a18cc6563e96eff8bf28c5e06f912 и новее · до bdced577da71b118b6ed4242ebd47f81bf54d406затронута · git
- 2796d846d74a18cc6563e96eff8bf28c5e06f912 и новее · до f05a4f9e959e0fc098046044c650acf897ea52d2затронута · git
- 2796d846d74a18cc6563e96eff8bf28c5e06f912 и новее · до 7544f3f5b0b58c396f374d060898b5939da31709затронута · git
- до 5.15не затронута · semver
- 6.6.122 и новее · до 6.6.* включительноне затронута · semver
- 6.12.67 и новее · до 6.12.* включительноне затронута · semver
- 6.15.5 и новее · до 6.15.* включительноне затронута · semver
- 6.16 и новеене затронута · original_commit_for_fix
Затронутые пакеты
Данные OSV и GitHub Advisory: экосистема, пакет и диапазон. Сопоставление SBOM использует эту таблицу.
| Экосистема | Пакет | Затронутый диапазон | Исправление |
|---|---|---|---|
| AlmaLinux:8 | bpftool | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-abi-stablelists | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-core | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-cross-headers | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-debug | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-debug-core | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-debug-devel | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-debug-modules | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-debug-modules-extra | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-devel | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-doc | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-headers | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-modules | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-modules-extra | до 4.18.0-553.107.1.el8_10 | 4.18.0-553.107.1.el8_10 |
| AlmaLinux:8 | kernel-rt | до 4.18.0-553.107.1.rt7.448.el8_10 | 4.18.0-553.107.1.rt7.448.el8_10 |
| AlmaLinux:8 | kernel-rt-core | до 4.18.0-553.107.1.rt7.448.el8_10 | 4.18.0-553.107.1.rt7.448.el8_10 |
| AlmaLinux:8 | kernel-rt-debug | до 4.18.0-553.107.1.rt7.448.el8_10 | 4.18.0-553.107.1.rt7.448.el8_10 |
| AlmaLinux:8 | kernel-rt-debug-core | до 4.18.0-553.107.1.rt7.448.el8_10 | 4.18.0-553.107.1.rt7.448.el8_10 |
| AlmaLinux:8 | kernel-rt-debug-devel | до 4.18.0-553.107.1.rt7.448.el8_10 | 4.18.0-553.107.1.rt7.448.el8_10 |
| AlmaLinux:8 | kernel-rt-debug-modules | до 4.18.0-553.107.1.rt7.448.el8_10 | 4.18.0-553.107.1.rt7.448.el8_10 |
| AlmaLinux:8 | kernel-rt-debug-modules-extra | до 4.18.0-553.107.1.rt7.448.el8_10 | 4.18.0-553.107.1.rt7.448.el8_10 |
| AlmaLinux:8 | kernel-rt-devel | до 4.18.0-553.107.1.rt7.448.el8_10 | 4.18.0-553.107.1.rt7.448.el8_10 |
| AlmaLinux:8 | kernel-rt-modules | до 4.18.0-553.107.1.rt7.448.el8_10 | 4.18.0-553.107.1.rt7.448.el8_10 |
+96
Тот же продукт
linux: все записиДругие записи с наивысшей оценкой для того же основного продукта.
- CVE-2022-0847A flaw was found in the way the "flags" member of the new pipe buffer structure was lacking proper initialization in copy_page_to_iter_pipe KEV89Срочно
- CVE-2021-22555Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACEKEV85Срочно
- CVE-2016-5195Race condition in mm/gup.c in the Linux kernel 2.x through 4.x before 4.8.3 allows local users to gain privileges by leveraging incorrect haKEV83Срочно
Опубликованы до и после этой записи в том же продукте
- ← РаньшеCVE-2025-382459 июл. 2025 г. · atm: Release atm_dev_mutex after removing procfs in atm_dev_deregister().31Наблюдать
- ← РаньшеCVE-2025-382479 июл. 2025 г. · userns and mnt_idmap leak in open_tree_attr(2)22Наблюдать
- Позже →CVE-2025-382499 июл. 2025 г. · ALSA: usb-audio: Fix out-of-bounds read in snd_usb_get_audioformat_uac3()28Наблюдать
Исправление
На какую версию обновиться
Версии с исправлением по данным вендора, реестров пакетов и Microsoft. Перед обновлением сверьтесь с бюллетенем вендора.
| Продукт / пакет | Исправленная версия | Источник |
|---|---|---|
| Linux Linux | 4d3c2a1d4c7c33103f1ddfdbc5cfe1ea4f6d0dcd | Вендор (CNA) |
| Linux Linux | 7544f3f5b0b58c396f374d060898b5939da31709 | Вендор (CNA) |
| Linux Linux | bdced577da71b118b6ed4242ebd47f81bf54d406 | Вендор (CNA) |
| Linux Linux | f05a4f9e959e0fc098046044c650acf897ea52d2 | Вендор (CNA) |
| cbl2 kernel 5.15.202.1-1 on CBL-Mariner 2.0 | Release Notes | Microsoft (MSRC) |
| almalinux:bpftool | 4.18.0-553.107.1.el8_10 · AlmaLinux:8 | Реестр пакетов (OSV) |
| almalinux:kernel | 4.18.0-553.107.1.el8_10 · AlmaLinux:8 | Реестр пакетов (OSV) |
| almalinux:kernel-abi-stablelists | 4.18.0-553.107.1.el8_10 · AlmaLinux:8 | Реестр пакетов (OSV) |
| almalinux:kernel-core | 4.18.0-553.107.1.el8_10 · AlmaLinux:8 | Реестр пакетов (OSV) |
| almalinux:kernel-cross-headers | 4.18.0-553.107.1.el8_10 · AlmaLinux:8 | Реестр пакетов (OSV) |
| almalinux:kernel-debug | 4.18.0-553.107.1.el8_10 · AlmaLinux:8 | Реестр пакетов (OSV) |
| almalinux:kernel-debug-core | 4.18.0-553.107.1.el8_10 · AlmaLinux:8 | Реестр пакетов (OSV) |
| almalinux:kernel-debug-devel | 4.18.0-553.107.1.el8_10 · AlmaLinux:8 | Реестр пакетов (OSV) |
| almalinux:kernel-debug-modules | 4.18.0-553.107.1.el8_10 · AlmaLinux:8 | Реестр пакетов (OSV) |
| almalinux:kernel-debug-modules-extra | 4.18.0-553.107.1.el8_10 · AlmaLinux:8 | Реестр пакетов (OSV) |
| almalinux:kernel-devel | 4.18.0-553.107.1.el8_10 · AlmaLinux:8 | Реестр пакетов (OSV) |
| almalinux:kernel-doc | 4.18.0-553.107.1.el8_10 · AlmaLinux:8 | Реестр пакетов (OSV) |
| debian:linux | 6.12.69-1 · Debian:13 | Реестр пакетов (OSV) |
| red hat:bpftool | 0:4.18.0-553.107.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Реестр пакетов (OSV) |
| red hat:bpftool-debuginfo | 0:4.18.0-553.107.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Реестр пакетов (OSV) |
| red hat:kernel | 0:4.18.0-553.107.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Реестр пакетов (OSV) |
| red hat:kernel-abi-stablelists | 0:4.18.0-553.107.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Реестр пакетов (OSV) |
| red hat:kernel-core | 0:4.18.0-553.107.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Реестр пакетов (OSV) |
| red hat:kernel-debug | 0:4.18.0-553.107.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Реестр пакетов (OSV) |
| red hat:kernel-debug-core | 0:4.18.0-553.107.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Реестр пакетов (OSV) |
| red hat:kernel-debug-debuginfo | 0:4.18.0-553.107.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Реестр пакетов (OSV) |
| red hat:kernel-debug-devel | 0:4.18.0-553.107.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Реестр пакетов (OSV) |
| red hat:kernel-debug-modules | 0:4.18.0-553.107.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Реестр пакетов (OSV) |
| red hat:kernel-debug-modules-extra | 0:4.18.0-553.107.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Реестр пакетов (OSV) |
| red hat:kernel-debuginfo | 0:4.18.0-553.107.1.el8_10 · Red Hat:enterprise_linux:8::baseos | Реестр пакетов (OSV) |
Статус эксплойта
Есть proof of concept
Существует публичный PoC или сигнатура обнаружения. Знание об эксплойте доступно; не откладывайте установку исправлений.
Доказательство
- Репозиторий PoC на GitHub ×1
Noroxi не размещает код эксплойтов и не даёт на них ссылок. Показываются имена модулей Metasploit и идентификаторы шаблонов Nuclei (имена, не код); записи Exploit-DB и репозитории PoC даются только числом.
| Источник | Тип | Дата |
|---|---|---|
| Репозиторий PoC на GitHub | stars:0 | 2026-01-22 |
Контекст для исследователя
Для пентестеров и исследователей: профиль атаки, расхождение оценок, хронология, коммиты исправлений, авторы, кандидаты в варианты и цепочки, охват bug bounty. Всё выводится из имеющихся данных; без кода эксплойтов.
Хронология
От публикации до сегодня: proof of concept, модуль Metasploit, CISA KEV и запись об исправлении. Даты — как сообщают источники.
- Публикация
- Первый PoC+197 дн.
- Сегодня25 окт. 2026 г.+473 дн.
Ежедневная оценка FIRST EPSS; записываются только изменения от 0,01 (ступенчатый график).
Ссылки на патчи и коммиты
Коммиты, PR и diff среди источников. Отправная точка для patch-diff и поиска вариантов; это исправления, не эксплойты.
Среди источников нет ссылок на коммит или PR.
Авторы
Все исследователиНашедшие, сообщившие и аналитики, названные в записи CNA. Нажмите имя, чтобы увидеть другие записи исследователя.
В записи CNA нет авторов.
Кандидаты в варианты
Тот же продукт, тот же класс уязвимости, в пределах 18 месяцев. Если патч не закрыл первопричину, родственная ошибка здесь.
Ночной расчёт связей ничего не нашёл.
Кандидаты в цепочки
Обход аутентификации и уязвимость, требующая привилегий, в одном продукте и близко по времени: вместе они могут дать путь без аутентификации.
—
Охват bug bounty
Известной публичной программы нет.
Источник: bounty-targets-data (публичные списки HackerOne, Bugcrowd, Intigriti, YesWeHack).
Технические детали
Условия атаки
- Может быть вызвана пользователем с локальным доступом к системе.
- Достаточно учётной записи с низкими привилегиями.
- Действия пользователя не требуются.
- Особые условия не требуются; воспроизводится стабильно.
В случае успеха
- Конфиденциальность
- высокое · данные могут быть прочитаны
- Целостность
- высокое · данные или конфигурация могут быть изменены
- Доступность
- высокое · работа сервиса может быть нарушена
- Вектор атаки
- Локальный
- Сложность атаки
- Низкая
- Требуемые привилегии
- Низкие
- Взаимодействие с пользователем
- Не требуется
- Область действия
- Не изменяется
- Влияние на конфиденциальность
- Высокое
- Влияние на целостность
- Высокое
- Влияние на доступность
- Высокое
Класс уязвимости (CWE)
CWE-416 · Use After FreeВектор CVSS
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
nvd-primary
Первопричина
После освобождения области памяти продолжает использоваться другая ссылка на неё. К этому моменту та же область может быть выделена под другие данные.
Ошибка в коде
Весь класс CWE-416Показательный пример этого класса уязвимостей. Это не исходный код вендора; показан ошибочный шаблон и его исправление.
Уязвимый код
free(dev->buf);
/* ... другой поток всё ещё работает ... */
process(dev->buf);Исправленный код
lock(&dev->lock);
free(dev->buf);
dev->buf = NULL;
unlock(&dev->lock);Контекст атаки
Шаблоны атак MITRE CAPEC и техники ATT&CK для этого класса уязвимости (CWE). Отправная точка для правил обнаружения и threat hunting.
У MITRE нет сопоставления CAPEC/ATT&CK для этого CWE.
Журнал изменений
- Исправление✗ → ✓
Для отслеживаемых записей эти изменения приходят и как уведомления. →
Источники
Показать все источники (ещё 3)Свернуть
Рекомендации вендоров и официальные записи. Ссылки на эксплойты/PoC намеренно исключены.