CVE-2026-64540 in Linux
요약
\~에 의해 VulDB • 2026. 07. 28.
리눅스 커널에서 다음 취약점이 해결되었습니다:
usbnet: gl620a: genelink_rx_fixup()에서의 버퍼 오버플로우 읽기 오류 수정
genelink_rx_fixup()는 장치로부터 제공된 데이터를 기반으로 각 패킷의 길이를 사용하여 집계된 RX 프레임을 개별 패킷으로 분할합니다. 해당 길이는 GL_MAX_PACKET_LEN(1514)로만 제한되며, 실제로 수신된 바이트 수와는 비교되지 않습니다.
따라서 악성 GeneLink(GL620A) 장치는 헤더에 packet_count > 1을 명시하고 최대 1514바이트 크기의 첫 번째 패킷을 포함하는 짧은 URB를 전송할 수 있습니다.
skb_put_data(gl_skb, packet->packet_data, size);
이후 수신 버퍼의 끝을 넘어 복사하여 인접한 slab 영역의 내용을 네트워크 스택으로 전달하게 되며, 이는 커널 힙 정보를 유출시키는 out-of-bounds read(범위 밖 읽기) 취약점입니다. 특권은 필요하지 않으며, 인터페이스가 활성화되면 usbnet RX softirq 경로에서 즉시 실행됩니다.
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()은 이미 요청된 길이가 버퍼에 맞는지 검증하며, 그렇지 않은 경우 NULL을 반환합니다. 복사 작업 전에 이를 이동하고 결과를 확인하여, 수신 데이터를 초과하는 패킷이 읽히기 전에 거부되도록 합니다. 모든 패킷이 완전히 포함된 정상적인 프레임에는 영향을 미치지 않습니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.