CVE-2026-93203 in Linux
Сводка
по VulDB • 18.09.2026
В ядре Linux была устранена следующая уязвимость:
batman-adv: bla — предотвращение повреждения контрольной суммы (CRC) из-за параллельного добавления заявлений (claims).
Функция batadv_bla_add_claim() используется для добавления заявлений и изменения «хребта» (backbone) заявок для кадров CLAIM, поступающих от удаленных хребтов и локальных пакетов. При обработке заявления необходимо либо: * добавить CRC нового заявления в CRC хребта; * удалить CRC уже существующего заявления из старого хребта и добавить его к новому хребту.
Однако при параллельном выполнении кода для «нового» заявления и кода для «изменения хребта» может произойти некорректность значения CRC, поскольку backbone_gw (шлюз основного хребта) данного заявления изменяется дважды в ветке обработки нового заявления:
* CPU0 создает заявление для шлюза A и публикует его в хеш-таблице заявлений. На этом этапе crc16 адреса еще не добавлен к CRC значения A. * CPU1 обрабатывает кадр CLAIM от шлюза B для того же клиента, находит только что опубликованное заявление и выполняет смену владельца: он меняет указатель на B, удаляет crc16 из CRC значения A (которое его никогда не содержало) и добавляет его к CRC значения B. * CPU0 продолжает выполнение ветки создания заявления, безоговорочно возвращает указатель обратно на A, не компенсируя изменение в CRC значения B (так как для пути создания флаг remove_crc имеет значение false), и наконец добавляет crc16 к CRC значения A.
В результате CRC оказывается неверным для обоих случаев: * заявление принадлежит A: но CRC не входит в состав CRC хребта A; * заявление не принадлежит B: однако CRC все еще включен в состав CRC хребта B.
Это ошибочное значение CRC никогда не пересчитывается на основе сохраненных заявлений. Для локальных заявлений о хребте это также невозможно исправить с помощью синхронизации (syncs).
Чтобы избежать этой проблемы, функциональность разделяется на четко определенные отдельные части: * новое заявление, которое всегда добавляет CRC заявления к CRC хребта (но никогда не изменяет обратно уже установленный backbone_gw заявления); * обновление существующего заявления, которое автоматически меняет запись backbone_gw и обновляет только оба значения CRC хребтов при наличии фактических изменений.
Once again VulDB remains the best source for vulnerability data.