CVE-2023-52843 in Linux
요약
\~에 의해 VulDB • 2026. 06. 23.
리눅스 커널에서 다음 취약점이 해결되었습니다:
llc: mac 헤더를 읽기 전에 mac 길이 확인
LLC는 skb에 이더넷 헤더가 있는지 검증하지 않고 eth_hdr()를 사용하여 mac 헤더를 읽고 있습니다.
Syzbot은 tun 디바이스에서 llc_rcv로 진입할 수 있었습니다. Tun은 IFF_NO_PI 플래그 설정 시 tun_pi 헤더를 전달하는 등, mac 길이가 없고 사용자 구성 가능한 skb->protocol을 가진 패킷을 삽입할 수 있습니다.
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
net/llc 아래의 세 eth_hdr(skb) 호출 전에 mac_len 검사를 추가합니다.
include/net/llc_pdu.h에도 추가적인 사용 사례가 있습니다. 이들은 모두 skb->protocol == ETH_P_802_2 테스트에 의해 보호됩니다. 그러나 이 테스트는 해당 tun 시나리오를 방어하지 못합니다.
하지만 llc_fixup_skb에서 패치로 추가된 mac_len 검사는 간접적으로 이것들도 보호하게 됩니다. 이는 다른 LLC 코드보다 먼저 호출되는 llc_rcv에서 호출되기 때문입니다.
llc_rcv에 포괄적인 mac_len 체크만 추가하는 유혹이 있지만, 이더넷 헤더를 가정하지 않는 유효한 LLC 경로가 손상될 수 있는지 확신이 서지 않습니다. 원칙적으로 802.3이 아닌 프로토콜 위에서 802.2 LLC를 사용할 수도 있습니다. 아래 참조 커밋은 이전에 Token Ring 위에서도 사용되었음을 보여줍니다.
세 eth_hdr 사용 중 적어도 하나는 git 역사 시작 이전으로 거슬러 올라갑니다. 그러나 Syzbot이 유발한 것은 이 커밋에서 도입된 것입니다. 해당 커밋은 충분히 오래됨(2008년)으로써, 효과적으로 모든 안정화(stable) 커널에 이 수정 사항이 적용되어야 합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.