<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-30T22:12:15.273209+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-31712</id>
    <title>CVE-2026-31712 — ksmbd: require minimum ACE size in smb_check_perm_dacl()</title>
    <updated>2026-09-30T22:12:15.274352+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Linux</p>
<p>In the Linux kernel, the following vulnerability has been resolved:</p>
<p>ksmbd: require minimum ACE size in smb_check_perm_dacl()</p>
<p>Both ACE-walk loops in smb_check_perm_dacl() only guard against an
under-sized remaining buffer, not against an ACE whose declared
`ace-&gt;size` is smaller than the struct it claims to describe:</p>
<p>if (offsetof(struct smb_ace, access_req) &gt; aces_size)
      break;
  ace_size = le16_to_cpu(ace-&gt;size);
  if (ace_size &gt; aces_size)
      break;</p>
<p>The first check only requires the 4-byte ACE header to be in bounds;
it does not require access_req (4 bytes at offset 4) to be readable.
An attacker who has set a crafted DACL on a file they own can declare
ace-&gt;size == 4 with aces_size == 4, pass both checks, and then</p>
<p>granted |= le32_to_cpu(ace-&gt;access_req);               /* upper loop */
  compare_sids(&amp;sid, &amp;ace-&gt;sid);                         /* lower loop */</p>
<p>reads access_req at offset 4 (OOB by up to 4 bytes) and ace-&gt;sid at
offset 8 (OOB by up to CIFS_SID_BASE_SIZE + SID_MAX_SUB_AUTHORITIES
* 4 bytes).</p>
<p>Tighten both loops to require</p>
<p>ace_size &gt;= offsetof(struct smb_ace, sid) + CIFS_SID_BASE_SIZE</p>
<p>which is the smallest valid on-wire ACE layout (4-byte header +
4-byte access_req + 8-byte sid base with zero sub-auths).  Also
reject ACEs whose sid.num_subauth exceeds SID_MAX_SUB_AUTHORITIES
before letting compare_sids() dereference sub_auth[] entries.</p>
<p>parse_sec_desc() already enforces an equivalent check (lines 441-448);
smb_check_perm_dacl() simply grew w…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-31712"/>
  </entry>
</feed>
