🔍 CVE-2026-63896

0.0
CVSS Score
UNKNOWN
2026-07-19
2026-07-27 17:44
✅ 완료

🇰🇷 한글 설명

Linux 커널의 USB gadget composite 드라이버에서 WebUSB GET_URL 처리 중 정수 언더플로우 취약점이 발견되었습니다. 공격자가 조작된 wLength 값을 포함한 SETUP 패킷을 보내면, 매우 큰 크기의 메모리 복사가 발생하여 시스템 메모리 오염 및 서비스 거부(DoS)를 유발할 수 있습니다.

💡 쉬운 설명

USB 장치가 웹 브라우저와 통신할 때 사용하는 기능에서 계산 오류가 발생하는 문제입니다. 나쁜 의도를 가진 장치를 연결하면 컴퓨터의 메모리를 망가뜨려 시스템을 멈추게 할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: usb: gadget: composite: fix integer underflow in WebUSB GET_URL handling The WebUSB GET_URL handler in composite_setup() narrows landing_page_length to fit the host-supplied wLength using landing_page_length = w_length - WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH + landing_page_offset; If wLength is smaller than WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH the unsigned subtraction wraps, and the subsequent memcpy(url_descriptor->URL, cdev->landing_page + landing_page_offset, landing_page_length - landing_page_offset); ends up copying close to UINT_MAX bytes from cdev->landing_page into cdev->req->buf. KASAN reports a slab-out-of-bounds in composite_setup on the kmalloc-2k gadget_info allocation, and FORTIFY_SOURCE traps the memcpy as a 4294967293-byte field-spanning write into url_descriptor->URL (size 252). A USB host can reach this from a single SETUP packet against any gadget that has webusb/use=1 and a landingPage configured. Handle the small-wLength case before the math: when the host requested fewer bytes than the URL descriptor header, only the header is meaningful and no URL bytes need to be copied. Setting landing_page_length to landing_page_offset makes the existing memcpy a no-op and leaves the descriptor returned to the host unchanged for all larger wLength values.

📍 영향받는 시스템

WebUSB 기능(use=1)과 landingPage가 설정된 Linux 커널 USB gadget 구성

⚔️ 공격 벡터

WebUSB를 지원하는 USB 장치에 조작된 wLength 값을 가진 단일 SETUP 패킷 전송

🛡️ 대응 방법

해당 취약점이 수정된 최신 Linux 커널 버전으로 업데이트

🔧 검증 코드

현재 실행 중인 커널 버전을 확인하여 취약점이 해결된 패치 버전인지 확인합니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel