<?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 06:26:15 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-68100 — ksmbd: validate num_subauth when copying ACE in set_ntacl_dacl</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-68100</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;ksmbd: validate num_subauth when copying ACE in set_ntacl_dacl&lt;/p&gt;
&lt;p&gt;set_ntacl_dacl() copies each ACE from the attacker-controlled stored
security descriptor verbatim into the response DACL without checking
sid.num_subauth. The ACE bytes (including an unchecked num_subauth)
originate from an authenticated SMB2_SET_INFO(SecInfo=DACL) that is
stored raw via ksmbd_vfs_set_sd_xattr(); parse_dacl() rejects a bad ACE
with `break` rather than an error, so parse_sec_desc() still returns
success and the malformed SD reaches the xattr intact.&lt;/p&gt;
&lt;p&gt;On a subsequent SMB2_QUERY_INFO(SecInfo=DACL) for an inode carrying a
POSIX access ACL, build_sec_desc() -&amp;gt; set_ntacl_dacl() -&amp;gt;
set_posix_acl_entries_dacl() walks the copied ACEs and reads&lt;/p&gt;
&lt;p&gt;ntace-&amp;gt;sid.sub_auth[ntace-&amp;gt;sid.num_subauth - 1]&lt;/p&gt;
&lt;p&gt;with num_subauth taken straight from the stored SD. Since sub_auth[]
is fixed at SID_MAX_SUB_AUTHORITIES (15), a crafted num_subauth (e.g.
255) drives an out-of-bounds heap read of ~1 KB with an offset fully
controlled by an authenticated client.&lt;/p&gt;
&lt;p&gt;The sibling functions already gate this field:
  parse_dacl()    -- num_subauth == 0 || &amp;gt; SID_MAX_SUB_AUTHORITIES
  parse_sid()     -- num_subauth &amp;gt; SID_MAX_SUB_AUTHORITIES
  smb_copy_sid()  -- min_t(u8, num_subauth, SID_MAX_SUB_AUTHORITIES)
set_ntacl_dacl() is the lone inconsistent path that omits the check.&lt;/p&gt;
&lt;p&gt;Add the same num_subauth validation in set_ntacl_dacl() before copying
the ACE, matching the…&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;ksmbd: validate num_subauth when copying ACE in set_ntacl_dacl&lt;/p&gt;
&lt;p&gt;set_ntacl_dacl() copies each ACE from the attacker-controlled stored
security descriptor verbatim into the response DACL without checking
sid.num_subauth. The ACE bytes (including an unchecked num_subauth)
originate from an authenticated SMB2_SET_INFO(SecInfo=DACL) that is
stored raw via ksmbd_vfs_set_sd_xattr(); parse_dacl() rejects a bad ACE
with `break` rather than an error, so parse_sec_desc() still returns
success and the malformed SD reaches the xattr intact.&lt;/p&gt;
&lt;p&gt;On a subsequent SMB2_QUERY_INFO(SecInfo=DACL) for an inode carrying a
POSIX access ACL, build_sec_desc() -&amp;gt; set_ntacl_dacl() -&amp;gt;
set_posix_acl_entries_dacl() walks the copied ACEs and reads&lt;/p&gt;
&lt;p&gt;ntace-&amp;gt;sid.sub_auth[ntace-&amp;gt;sid.num_subauth - 1]&lt;/p&gt;
&lt;p&gt;with num_subauth taken straight from the stored SD. Since sub_auth[]
is fixed at SID_MAX_SUB_AUTHORITIES (15), a crafted num_subauth (e.g.
255) drives an out-of-bounds heap read of ~1 KB with an offset fully
controlled by an authenticated client.&lt;/p&gt;
&lt;p&gt;The sibling functions already gate this field:
  parse_dacl()    -- num_subauth == 0 || &amp;gt; SID_MAX_SUB_AUTHORITIES
  parse_sid()     -- num_subauth &amp;gt; SID_MAX_SUB_AUTHORITIES
  smb_copy_sid()  -- min_t(u8, num_subauth, SID_MAX_SUB_AUTHORITIES)
set_ntacl_dacl() is the lone inconsistent path that omits the check.&lt;/p&gt;
&lt;p&gt;Add the same num_subauth validation in set_ntacl_dacl() before copying
the ACE, matching the…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-68100</guid>
    </item>
  </channel>
</rss>
