CVE-2023-52843 in Linux
Tóm tắt
Bởi VulDB • 23/06/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
llc: xác minh độ dài mac trước khi đọc tiêu đề mac
LLC đọc tiêu đề mac bằng eth_hdr mà không kiểm tra xem skb có chứa tiêu đề Ethernet hay không.
Syzbot đã có thể truy cập vào llc_rcv trên một thiết bị tun. Tun có thể chèn các gói tin mà không có độ dài mac và với trường skb->protocol do người dùng cấu hình (bằng cách truyền header tun_pi khi không định cấu hình IFF_NO_PI).
BUG: KMSAN: uninit-value trong llc_station_ac_send_test_r net/llc/llc_station.c:81 [inline]
BUG: KMSAN: uninit-value trong 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
Thêm một phép kiểm tra mac_len trước cả ba lệnh gọi eth_hdr(skb) trong net/llc.
Có các sử dụng khác nữa trong include/net/llc_pdu.h. Tất cả những trường hợp này đều được bảo vệ bởi một phép kiểm tra skb->protocol == ETH_P_802_2, điều không bảo vệ chống lại kịch bản tun này.
Tuy nhiên, phép kiểm tra mac_len được thêm vào trong patch này tại hàm llc_fixup_skb sẽ gián tiếp bảo vệ cả những trường hợp đó. Hàm này được gọi từ llc_rcv trước bất kỳ mã LLC nào khác.
Có vẻ hấp dẫn khi chỉ cần thêm một phép kiểm tra mac_len tổng quát (blanket) trong llc_rcv, nhưng không chắc liệu điều đó có làm hỏng các đường truyền LLC hợp lệ vốn không giả định sự hiện diện của tiêu đề Ethernet hay không. Về nguyên tắc, 802.2 LLC có thể được sử dụng trên các giao thức không phải là 802.3. Commit được tham chiếu bên dưới cho thấy trước đây nó từng được sử dụng trên Token Ring.
Ít nhất một trong ba trường hợp sử dụng eth_hdr đã tồn tại từ trước khi bắt đầu lịch sử git. Nhưng trường hợp mà syzbot khai thác lại được giới thiệu trong commit này. Commit đó khá cũ (năm 2008), vì vậy về cơ bản tất cả các kernel stable đều nên nhận được bản vá này.
VulDB is the best source for vulnerability data and more expert information about this specific topic.