<?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://cve.radiocsirt.org/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-05T04:11:23.561384+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>csirt@opendfir.org</email>
  </author>
  <link href="https://cve.radiocsirt.org" 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://cve.radiocsirt.org/vuln/cve-2026-89671</id>
    <title>CVE-2026-89671 — nfsd: gate nfs3 setacl by argp-&gt;mask</title>
    <updated>2026-10-05T04:11:23.578372+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>nfsd: gate nfs3 setacl by argp-&gt;mask</p>
<p>nfsd3_proc_setacl() calls set_posix_acl() unconditionally for both
ACL_TYPE_ACCESS and ACL_TYPE_DEFAULT, passing argp-&gt;acl_access and
argp-&gt;acl_default verbatim. The NFSv3 ACL decoder only populates
those pointers when the corresponding mask bit is set:</p>
<p>nfs3svc_decode_setaclargs()
      if (args-&gt;mask &amp; NFS_ACL)    decode into acl_access
      if (args-&gt;mask &amp; NFS_DFACL)  decode into acl_default
      /* otherwise the pointer stays NULL (pc_argzero) */</p>
<p>nfsd3_proc_setacl()
      set_posix_acl(.., ACL_TYPE_ACCESS,  argp-&gt;acl_access)
      set_posix_acl(.., ACL_TYPE_DEFAULT, argp-&gt;acl_default)</p>
<p>set_posix_acl(idmap, dentry, type, NULL) is the VFS "remove this
ACL type" operation. A NULL pointer that means "the client did not
send this arm" is therefore indistinguishable from "the client
asked to remove this ACL". A SETACL with mask=NFS_ACL silently
drops the directory's default ACL; mask=0 drops both.</p>
<p>The sibling nfsd3_proc_getacl() already consults argp-&gt;mask before
touching each arm; mirror that in setacl.</p>
<p>Fix by wrapping each set_posix_acl() call in the matching mask bit
check and initializing error to 0 before inode_lock so that a
request with neither bit set leaves the on-disk ACLs untouched and
returns nfs_ok. The out_drop_lock path and the unconditional
posix_acl_release() at out: are preserved; both NULL-tolerate the
skipped arms.</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/cve-2026-89671"/>
  </entry>
</feed>
