<?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 13:18:44 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-74500 — ALSA: usb-audio: fix stack info leak in RME Digiface status</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-74500</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;ALSA: usb-audio: fix stack info leak in RME Digiface status&lt;/p&gt;
&lt;p&gt;snd_rme_digiface_read_status() reads a four-word status block from the
device into an uninitialised on-stack __le32 buf[4] and, whenever the
vendor control-IN transfer does not return a negative error, copies all
four words into the caller&amp;#39;s status[].&lt;/p&gt;
&lt;p&gt;snd_usb_ctl_msg() copies the full requested size back into the caller&amp;#39;s
buffer regardless of how many bytes the data stage actually delivered:&lt;/p&gt;
&lt;p&gt;buf = kmemdup(data, size, GFP_KERNEL);
	err = usb_control_msg(dev, pipe, request, requesttype,
			      value, index, buf, size, timeout);
	memcpy(data, buf, size);&lt;/p&gt;
&lt;p&gt;usb_control_msg() returns the transferred length on a short control-IN,
which is a non-negative value, and writes only that many bytes.  The
remainder of the copy back is the kmemdup()ed image of the caller&amp;#39;s
buffer, so a device answering with a short data stage leaves the
trailing words of buf[] holding leftover kernel stack.  The only guard
in the caller is err &amp;lt; 0, so those words are stored into status[].&lt;/p&gt;
&lt;p&gt;They then reach user space: snd_rme_digiface_get_status_val() selects a
16-bit halfword of status[] per the control&amp;#39;s reg/mask, and the eight
Digiface status controls together expose the whole 16-byte frame to an
unprivileged reader of /dev/snd/controlC*.&lt;/p&gt;
&lt;p&gt;Zero-initialise the buffer so a short read yields zeros instead of stack
residue.  This mirrors snd_rme_get_status1(), which already cl…&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;ALSA: usb-audio: fix stack info leak in RME Digiface status&lt;/p&gt;
&lt;p&gt;snd_rme_digiface_read_status() reads a four-word status block from the
device into an uninitialised on-stack __le32 buf[4] and, whenever the
vendor control-IN transfer does not return a negative error, copies all
four words into the caller&amp;#39;s status[].&lt;/p&gt;
&lt;p&gt;snd_usb_ctl_msg() copies the full requested size back into the caller&amp;#39;s
buffer regardless of how many bytes the data stage actually delivered:&lt;/p&gt;
&lt;p&gt;buf = kmemdup(data, size, GFP_KERNEL);
	err = usb_control_msg(dev, pipe, request, requesttype,
			      value, index, buf, size, timeout);
	memcpy(data, buf, size);&lt;/p&gt;
&lt;p&gt;usb_control_msg() returns the transferred length on a short control-IN,
which is a non-negative value, and writes only that many bytes.  The
remainder of the copy back is the kmemdup()ed image of the caller&amp;#39;s
buffer, so a device answering with a short data stage leaves the
trailing words of buf[] holding leftover kernel stack.  The only guard
in the caller is err &amp;lt; 0, so those words are stored into status[].&lt;/p&gt;
&lt;p&gt;They then reach user space: snd_rme_digiface_get_status_val() selects a
16-bit halfword of status[] per the control&amp;#39;s reg/mask, and the eight
Digiface status controls together expose the whole 16-byte frame to an
unprivileged reader of /dev/snd/controlC*.&lt;/p&gt;
&lt;p&gt;Zero-initialise the buffer so a short read yields zeros instead of stack
residue.  This mirrors snd_rme_get_status1(), which already cl…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-74500</guid>
    </item>
  </channel>
</rss>
