🇰🇷 한글 설명
Linux 커널의 usbnet gl620a 드라이버에서 발생한 취약점으로, 실제 수신된 데이터 크기를 확인하지 않고 장치가 제공한 길이를 신뢰하여 데이터를 복사할 때 발생합니다. 악의적인 GeneLink(GL620A) 장치가 조작된 데이터를 전송할 경우 커널 힙 메모리의 경계를 넘어 읽기가 수행되어 민감한 정보가 유출될 수 있습니다.
💡 쉬운 설명
USB 네트워크 장치가 실제 받은 데이터보다 더 많은 데이터를 읽으라고 명령하여 컴퓨터의 중요한 비밀 정보를 몰래 훔쳐갈 수 있는 결함입니다. 특수하게 제작된 USB 장치를 연결하는 것만으로도 시스템의 메모리 정보가 유출될 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
usbnet: gl620a: fix out-of-bounds read in genelink_rx_fixup()
genelink_rx_fixup() splits an aggregated RX frame into its individual
packets, using a per-packet length taken from device-supplied data. That
length is only bounded by GL_MAX_PACKET_LEN (1514); it is never compared
against how many bytes were actually received.
A malicious GeneLink (GL620A) device can therefore send a short URB whose
header claims packet_count > 1 and a first packet of up to 1514 bytes.
skb_put_data(gl_skb, packet->packet_data, size);
then copies past the end of the receive buffer and hands the adjacent slab
contents up the network stack, an out-of-bounds read that leaks kernel heap.
No privilege is required: the path runs in the usbnet RX softirq as soon as
the interface is up.
BUG: KASAN: slab-out-of-bounds in genelink_rx_fixup (drivers/net/usb/gl620a.c:112)
Read of size 1514 at addr ffff888011309708 by task ksoftirqd/0/14
Call Trace:
...
__asan_memcpy (mm/kasan/shadow.c:105)
genelink_rx_fixup (include/linux/skbuff.h:2814 drivers/net/usb/gl620a.c:112)
usbnet_bh (drivers/net/usb/usbnet.c:572 drivers/net/usb/usbnet.c:1589)
process_one_work (kernel/workqueue.c:3322)
bh_worker (kernel/workqueue.c:3405)
tasklet_action (kernel/softirq.c:965)
handle_softirqs (kernel/softirq.c:622)
run_ksoftirqd (kernel/softirq.c:1076)
...
skb_pull() already verifies that the requested length fits the buffer and
returns NULL otherwise. Move it ahead of the copy and check its result, so
a packet that overruns the received data is rejected before it is read.
Well-formed frames, whose packets are fully present, are unaffected.
📍 영향받는 시스템
Linux kernel (gl620a driver 사용 환경)
⚔️ 공격 벡터
악의적으로 조작된 패킷을 전송하는 GeneLink (GL620A) USB 장치 연결
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 skb_pull() 검증 로직이 포함된 수정본을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인합니다.