<?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>Tue, 29 Sep 2026 14:34:05 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-90018 — staging: rtl8723bs: fix OOB read / stack overflow in rtw_get_wps_attr()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-90018</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;staging: rtl8723bs: fix OOB read / stack overflow in rtw_get_wps_attr()&lt;/p&gt;
&lt;p&gt;rtw_get_wps_attr() walks WPS attributes inside a WPS IE taken from
a wireless management frame. For each candidate attribute it only
checks that the fixed 4-byte attribute header (2-byte ID + 2-byte
length) fits inside the IE:&lt;/p&gt;
&lt;p&gt;if (attr_ptr + 4 &amp;gt; wps_ie + wps_ielen)
		break;
	u16 attr_id = get_unaligned_be16(attr_ptr);
	u16 attr_data_len = get_unaligned_be16(attr_ptr + 2);
	u16 attr_len = attr_data_len + 4;&lt;/p&gt;
&lt;p&gt;attr_data_len (and therefore attr_len) is read directly from the
wire and is never checked against the remaining bytes in the IE
before being used as the size of:&lt;/p&gt;
&lt;p&gt;memcpy(buf_attr, attr_ptr, attr_len);&lt;/p&gt;
&lt;p&gt;Since attr_len is fully attacker controlled (0 to 65535+4), this is
both a heap OOB read of wps_ie, and, more seriously, a stack buffer
overflow at several call sites where buf_attr is a single-byte
stack variable, e.g. rtw_get_wps_attr_content()&amp;#39;s callers passing
WPS_ATTR_SELECTED_REGISTRAR into a stack &amp;#34;u8 sr&amp;#34;/&amp;#34;u8
selected_registrar&amp;#34; (drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c,
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c). A crafted WPS IE in a
beacon or probe response processed during scanning can therefore
smash the stack of the parsing thread.&lt;/p&gt;
&lt;p&gt;rtw_get_wps_attr_content() itself has no independent length check
and simply trusts the attr_len it gets back from rtw_get_wps_attr(),
so fixing the bound here also fixes that…&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;staging: rtl8723bs: fix OOB read / stack overflow in rtw_get_wps_attr()&lt;/p&gt;
&lt;p&gt;rtw_get_wps_attr() walks WPS attributes inside a WPS IE taken from
a wireless management frame. For each candidate attribute it only
checks that the fixed 4-byte attribute header (2-byte ID + 2-byte
length) fits inside the IE:&lt;/p&gt;
&lt;p&gt;if (attr_ptr + 4 &amp;gt; wps_ie + wps_ielen)
		break;
	u16 attr_id = get_unaligned_be16(attr_ptr);
	u16 attr_data_len = get_unaligned_be16(attr_ptr + 2);
	u16 attr_len = attr_data_len + 4;&lt;/p&gt;
&lt;p&gt;attr_data_len (and therefore attr_len) is read directly from the
wire and is never checked against the remaining bytes in the IE
before being used as the size of:&lt;/p&gt;
&lt;p&gt;memcpy(buf_attr, attr_ptr, attr_len);&lt;/p&gt;
&lt;p&gt;Since attr_len is fully attacker controlled (0 to 65535+4), this is
both a heap OOB read of wps_ie, and, more seriously, a stack buffer
overflow at several call sites where buf_attr is a single-byte
stack variable, e.g. rtw_get_wps_attr_content()&amp;#39;s callers passing
WPS_ATTR_SELECTED_REGISTRAR into a stack &amp;#34;u8 sr&amp;#34;/&amp;#34;u8
selected_registrar&amp;#34; (drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c,
drivers/staging/rtl8723bs/core/rtw_mlme_ext.c). A crafted WPS IE in a
beacon or probe response processed during scanning can therefore
smash the stack of the parsing thread.&lt;/p&gt;
&lt;p&gt;rtw_get_wps_attr_content() itself has no independent length check
and simply trusts the attr_len it gets back from rtw_get_wps_attr(),
so fixing the bound here also fixes that…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-90018</guid>
    </item>
  </channel>
</rss>
