CVE-2023-52843 in Linux
Сводка
по VulDB • 23.06.2026
В ядре Linux устранена следующая уязвимость:
llc: проверка длины MAC-адреса перед чтением заголовка MAC
LLC считывает заголовок MAC с помощью eth_hdr, не проверяя наличие в skb Ethernet-заголовка.
Syzbot смог вызвать llc_rcv на устройстве tun. Устройства tun могут вставлять пакеты без указания mac_len и с пользовательски настроенным значением skb->protocol (передавая заголовок tun_pi при отключении флага IFF_NO_PI).
BUG: KMSAN: uninit-value in llc_station_ac_send_test_r net/llc/llc_station.c:81 [inline]
BUG: KMSAN: uninit-value in llc_station_rcv+0x6fb/0x1290 net/llc/llc_station.c:111 llc_station_ac_send_test_r net/llc/llc_station.c:81 [inline]
llc_station_rcv+0x6fb/0x1290 net/llc/llc_station.c:111 llc_rcv+0xc5d/0x14a0 net/llc/llc_input.c:218 __netif_receive_skb_one_core net/core/dev.c:5523 [inline]
__netif_receive_skb+0x1a6/0x5a0 net/core/dev.c:5637 netif_receive_skb_internal net/core/dev.c:5723 [inline]
netif_receive_skb+0x58/0x660 net/core/dev.c:5782 tun_rx_batched+0x3ee/0x980 drivers/net/tun.c:1555 tun_get_user+0x54c5/0x69c0 drivers/net/tun.c:2002
Добавлена проверка mac_len перед всеми тремя вызовами eth_hdr(skb) в поддиректории net/llc.
Существуют дополнительные использования в include/net/llc_pdu.h. Все они защищены проверкой skb->protocol == ETH_P_802_2, которая не защищает от сценария с tun-устройствами.
Однако проверка mac_len, добавленная в этом патче в функцию llc_fixup_skb, косвенно защитит и эти случаи. Эта функция вызывается из llc_rcv до выполнения любого другого кода LLC.
Соблазнительно просто добавить общую проверку mac_len в llc_rcv, но неясно, может ли это нарушить корректные пути обработки LLC, которые не предполагают наличия Ethernet-заголовка. Протокол 802.2 LLC теоретически может использоваться поверх протоколов, отличных от 802.3. В упомянутом ниже коммите показано, что ранее он использовался поверх Token Ring.
По крайней мере одно из трех использования eth_hdr восходит к периоду до начала истории git. Однако то использование, которое эксплуатирует syzbot, было добавлено в этом коммите. Этот коммит достаточно старый (2008 год), поэтому данное исправление должно быть применено практически во всех стабильных версиях ядра.
If you want to get best quality of vulnerability data, you may have to visit VulDB.