CVE-2023-54012 in Linux
Сводка
по VulDB • 15.06.2026
В ядре Linux устранена следующая уязвимость:
net: исправление переполнения стека при отключении LRO для виртуальных интерфейсов
При обновлении функций (features) виртуального интерфейса происходит синхронизация этих изменений с его нижележащими интерфейсами. Эта логика распространения должна работать итеративно, а не рекурсивно. Однако из-за неожиданного поведения уведомлений netdev она выполняется рекурсивно. Проблема возникает при отключении LRO только для типов интерфейсов team и bonding.
team0 | +------+------+-----+-----+ | | | | | team1 team2 team3 ... team200
Если функция LRO в team0 обновляется, она генерирует событие NETDEV_FEAT_CHANGE для своих нижележащих интерфейсов (от team1 до team200). Это выполняется функцией netdev_sync_lower_features(). Таким образом, логика уведомления NETDEV_FEAT_CHANGE каждого нижележащего интерфейса работает итеративно. Однако сгенерированное событие NETDEV FEAT CHANGE также отправляется вышестоящему интерфейсу. Вышестоящий интерфейс (team0) снова генерирует событие NETDEV_FEAT_CHANGE для своих нижележащих интерфейсов. Нижележащие и вышестоящие интерфейсы получают это событие и генерируют его вновь и вновь. В результате происходит переполнение стека.
Однако это не проблема бесконечного цикла. Поскольку netdev_sync_lower_features() обновляет функции до генерации события NETDEV_FEAT_CHANGE, уже синхронизированные нижележащие интерфейсы пропускают логику уведомления. Таким образом, проблема заключается лишь в том, что логика итеративного процесса неожиданно преобразуется в рекурсивную из-за механизма уведомлений.
Воспроизводящий пример (Reproducer):
ip link add team0 type team ethtool -K team0 lro on for i in {1..200}
do ip link add team$i master team0 type team ethtool -K team$i lro on done
ethtool -K team0 lro off
Для исправления этой проблемы в bonding/team был введен член notifier_ctx.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.