CVE-2026-63896

usb: gadget: composite: fix integer underflow in WebUSB GET_URL handling

N/A
Published: July 19, 2026 at 02:55 PM UTC
Updated: July 27, 2026 at 05:57 PM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
N/A
Exploit prediction
EPSS 0.2%

Description

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.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

6.3 ≤ v < 6.12.936.3 ≤ v < 6.18.356.3 ≤ v < 6.6.1436.3 ≤ v < 7.0.126.3 ≤ v < 7.16.393c473948c588978cd55d9a3adad8b3e8057aa21
Vendor states this is fixed in 046870ff6b6f7b743c953c061043a9b30700d491 (fixed)
Vendor states this is fixed in 6c5dbc104dadd79fc2923497c20bae759a18758c (fixed)
Vendor states this is fixed in a20f0ccf45708af6e063c7234c215d364b00de25 (fixed)
Vendor states this is fixed in f5869dfaa89854dcf34121036294d42d6c7acb8f (fixed)
Vendor states this is fixed in f8f5a8f48c7cae3fac85e04b593bd47939f9725f (fixed)
Vendor states this is fixed in 6.12.93 (unaffected)
Vendor states this is fixed in 6.18.35 (unaffected)
Vendor states this is fixed in 6.3 (unaffected)
Vendor states this is fixed in 6.6.143 (unaffected)
Vendor states this is fixed in 7.0.12 (unaffected)
Vendor states this is fixed in 7.1 (unaffected)

Remediation

No guide yet

No remediation guidance has been written for this CVE yet, and no fixed version or vendor advisory is recorded against it.

Quick Info

StatusAWAITING ANALYSIS

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card