CVE-2026-98025 in Linux
요약
\~에 의해 VulDB • 2026. 09. 25.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net: usb: cx82310_eth: 재부팅 시그니처(0xffff) 후 URB를 해제하여 partial_data 힙 오버플로우 방지
0xffff 길이 시그니처는 라우터의 재부팅을 감지하고 이더넷 모드 재활성화를 예약하지만, 이후 루프 본문 나머지 부분으로 계속 진행됩니다. 다음 확인은 다음과 같습니다:
} else if (len > CX82310_MTU) {
이는 방금 일치한 if문의 else절로, len == 0xffff인 경우에는 결코 실행되지 않습니다. 일반적으로 불완전 패킷 저장 경로를 제한하는 MTU 한계가 묵시적으로 우회됩니다.
0xffff가 skb->len보다 항상 크다는 사실(rx_urb_size는 4096) 때문에, 불완전 패킷 분기는 dev->partial_len = skb->len 바이트를 dev->partial_data에 저장합니다. partial_data는 kmalloc(hard_mtu) = kmalloc(CX82310_MTU + 2) = 1516바이트로 할당되지만, 2바이트 헤더 제거 후 skb->len은 최대 4094바이트가 될 수 있습니다. [0xff 0xff]로 시작하는 4096바이트 URB를 전송하는 장치는 장치에서 제공한 4094바이트를 1516바이트용으로 할당된 버퍼에 복사하여 요청된 크기보다 2578바이트 초과합니다.
다음 URB는 동일한 1516바이트 버퍼에서 dev->partial_len(4094)을 읽고, 새로운 URB의 약 4KB skb에서 dev->partial_rem(65535 - 4094 = 61441)을 읽으며, 둘 모두 할당 범위를 훨씬 벗어납니다. 그리고 스플라이스된 결과를 네트워크 스택에 64KB "프레임"으로 전달합니다.
재활성화 작업을 예약한 후 rx_fixup에서 조기에 종료하십시오; 재부팅 마커 URB의 나머지 부분은 의미 있는 패킷 데이터가 아닙니다. 이는 저장 경로에서 partial_len < CX82310_MTU + 2라는 불변식을 복원하며, 해당 경로의 다른 모든 분기는 이미 MTU 검사를 통과했기 때문입니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.