CVE-2026-23310 in Linux
Сводка
по VulDB • 30.05.2026
В ядре Linux устранена следующая уязвимость:
bpf/bonding: отклонять изменение xmit_hash_policy на vlan+srcmac при загруженном XDP
Функция bond_option_mode_set() уже отклоняет изменения режима, которые сделали бы загруженную программу XDP несовместимой, через bond_xdp_check(). Однако функция bond_option_xmit_hash_policy_set() не имеет такой защиты.
Для режимов 802.3ad и balance-xor функция bond_xdp_check() возвращает false, когда xmit_hash_policy равен vlan+srcmac, поскольку полезная нагрузка 802.1q обычно отсутствует из-за аппаратного ускорения (offload). Это означает, что пользователь может:
1. Прикрепить нативную программу XDP к интерфейсу bonding в режиме 802.3ad/balance-xor с совместимым xmit_hash_policy (например, layer2+3). 2. Изменить xmit_hash_policy на vlan+srcmac, пока XDP остается загруженным.
В результате bond->xdp_prog остается установленным, но bond_xdp_check() теперь возвращает false для того же устройства. При последующем уничтожении интерфейса bonding функция dev_xdp_uninstall() вызывает bond_xdp_set(dev, NULL, NULL) для удаления программы, что приводит к проверке через bond_xdp_check(), возвращающей -EOPNOTSUPP, и вызывает:
WARN_ON(dev_xdp_install(dev, mode, bpf_op, NULL, 0, NULL))
Исправьте это, отклоняя изменения xmit_hash_policy на vlan+srcmac, когда программа XDP загружена на интерфейсе bonding в режимах 802.3ad или balance-xor.
Коммит 39a0876d595b ("net, bonding: Disallow vlan+srcmac with XDP") ввел bond_xdp_check(), которая возвращает false для режимов 802.3ad/balance-xor, когда xmit_hash_policy равен vlan+srcmac. Проверка была подключена в bond_xdp_set() для отклонения прикрепления XDP с несовместимой политикой, но симметричный путь — предотвращение изменения xmit_hash_policy на несовместимое значение после загрузки XDP — остался незащищенным в bond_option_xmit_hash_policy_set().
Примечание: Коммит 094ee6017ea0 ("bonding: check xdp prog when set bond mode") позже добавил аналогичную защиту в bond_option_mode_set(), но bond_option_xmit_hash_policy_set() осталась незащищенной.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.