<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Thu, 01 Oct 2026 10:46:16 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-63896 — usb: gadget: composite: fix integer underflow in WebUSB GET_URL handling</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-63896</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;usb: gadget: composite: fix integer underflow in WebUSB GET_URL handling&lt;/p&gt;
&lt;p&gt;The WebUSB GET_URL handler in composite_setup() narrows
landing_page_length to fit the host-supplied wLength using&lt;/p&gt;
&lt;p&gt;landing_page_length = w_length
		- WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH + landing_page_offset;&lt;/p&gt;
&lt;p&gt;If wLength is smaller than WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH the
unsigned subtraction wraps, and the subsequent&lt;/p&gt;
&lt;p&gt;memcpy(url_descriptor-&amp;gt;URL,
	       cdev-&amp;gt;landing_page + landing_page_offset,
	       landing_page_length - landing_page_offset);&lt;/p&gt;
&lt;p&gt;ends up copying close to UINT_MAX bytes from cdev-&amp;gt;landing_page into
cdev-&amp;gt;req-&amp;gt;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-&amp;gt;URL (size 252).&lt;/p&gt;
&lt;p&gt;A USB host can reach this from a single SETUP packet against any
gadget that has webusb/use=1 and a landingPage configured.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;usb: gadget: composite: fix integer underflow in WebUSB GET_URL handling&lt;/p&gt;
&lt;p&gt;The WebUSB GET_URL handler in composite_setup() narrows
landing_page_length to fit the host-supplied wLength using&lt;/p&gt;
&lt;p&gt;landing_page_length = w_length
		- WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH + landing_page_offset;&lt;/p&gt;
&lt;p&gt;If wLength is smaller than WEBUSB_URL_DESCRIPTOR_HEADER_LENGTH the
unsigned subtraction wraps, and the subsequent&lt;/p&gt;
&lt;p&gt;memcpy(url_descriptor-&amp;gt;URL,
	       cdev-&amp;gt;landing_page + landing_page_offset,
	       landing_page_length - landing_page_offset);&lt;/p&gt;
&lt;p&gt;ends up copying close to UINT_MAX bytes from cdev-&amp;gt;landing_page into
cdev-&amp;gt;req-&amp;gt;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-&amp;gt;URL (size 252).&lt;/p&gt;
&lt;p&gt;A USB host can reach this from a single SETUP packet against any
gadget that has webusb/use=1 and a landingPage configured.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-63896</guid>
    </item>
  </channel>
</rss>
