CVE-2026-63896

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

published July 19, 2026

CVSS
—
EPSS
0%
Percentile
11.2
In the wild
Unconfirmed
What it is

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.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00214 · 11.2th percentile
Published
2026-07-19T14:55Z
EPSS history
Timeline
  • 19 JUL 14:55Z
    usb: gadget: composite: fix integer underflow in WebUSB GET_URL handling
    cvelistv5