CVE-2026-93203: гонка в batman-adv bla приводит к повреждению CRC
В ядре Linux устранена уязвимость в модуле batman-adv (подсистема bla), вызванная параллельным добавлением claim-записей и приводящая к порче CRC backbone-шлюзов. Проблема затрагивает системы, использующие batman-adv для mesh-сетей. Уровень опасности — HIGH (CVSS 7.1).
Подробности
Функцияbatadv_bla_add_claim() отвечает за добавление claim-записей и модификацию backbone-структур для кадров CLAIM, приходящих от удалённых backbone-устройств, а также для локальных пакетов. При обработке claim она должна либо добавить CRC нового claim в CRC соответствующего backbone, либо удалить CRC уже существующего claim из старого backbone и добавить его в новый.
Уязвимость проявляется, когда ветка кода для «нового» claim выполняется параллельно с веткой «смены backbone». В таком сценарии поле backbone_gw у claim может быть изменено дважды, что приводит к несогласованности CRC:
- CPU0 создаёт claim для шлюза A и публикует его в claim-хеше, но crc16 адреса ещё не добавлен в CRC шлюза A.
- CPU1 обрабатывает claim-кадр шлюза B для того же клиента, находит только что опубликованный claim и выполняет смену владельца: переключает указатель на B, удаляет crc16 из CRC шлюза A (где его никогда не было) и добавляет его в CRC шлюза B.
- CPU0 продолжает выполнение после ветки создания, безусловно возвращает указатель на A, не компенсируя при этом CRC шлюза B (для пути создания remove_crc равен false), и в итоге добавляет crc16 в CRC шлюза A.
В результате CRC оказывается неверным сразу для обоих шлюзов: claim принадлежит A, но его CRC отсутствует в CRC backbone A; claim не принадлежит B, но его CRC всё ещё находится в CRC backbone B. Ошибочный CRC никогда не пересчитывается из сохранённых claim-записей. Для локальных backbone-claim ситуация также не исправляется через механизмы синхронизации.
Уязвимости присвоен уровень CVSS 7.1 (HIGH). Затронуто ядро Linux.
Что делать
Исправление уже включено в состав ядра Linux. Рекомендуется: - Обновить ядро Linux до версии, содержащей исправляющий коммит для CVE-2026-93203. - Если обновление невозможно, ограничить использование конфигураций batman-adv с bla на доверенных сегментах сети и минимизировать число параллельных операций с claim-записями. - Отслеживать состояние backbone-шлюзов и корректность CRC в mesh-инфраструктуре. Исправление разделяет логику на чёткие независимые части: добавление нового claim (всегда добавляет CRC в backbone, но не меняет уже установленныйbackbone_gw) и обновление существующего claim (автоматически меняет backbone_gw и обновляет обе CRC только при фактическом изменении).
Итог: CVE-2026-93203 — умеренно опасная гонка в batman-adv bla, приводящая к неисправимому повреждению CRC backbone-шлюзов. Единственный надёжный способ защиты — обновление ядра Linux.
Источник: CVE Project (cvelistV5)
