PT-2026-61102 · Linux · Linux

CVE-2026-53397

·

Publicado

2026-07-19

·

Atualizado

2026-07-19

CVSS v3.1

7.5

Alta

VetorAV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
In the Linux kernel, the following vulnerability has been resolved:
nfsd: fix posix acl leak on SETACL decode failure
nfsaclsvc decode setaclargs() and nfs3svc decode setaclargs() each call nfs stream decode acl() twice, first for NFS ACL and then for NFS DFACL. Each successful call transfers ownership of a freshly allocated posix acl into argp->acl access or argp->acl default. If the first call succeeds but the second fails, the decoder returns false and argp->acl access is left dangling.
ACLPROC2 SETACL.pc release was wired to nfssvc release attrstat and ACLPROC3 SETACL.pc release was wired to nfs3svc release fhandle. Both only call fh put() and have no knowledge of the ACL fields on argp. The posix acl release() pairs sat at the out: labels inside nfsacld proc setacl() and nfsd3 proc setacl(), but svc process() skips pc func when pc decode returns false, so that cleanup is unreachable on decode failure:
svc process common() pc decode() /* decode setaclargs: false / / pc func skipped / pc release() / fh put only -- ACLs leaked */
The orphaned posix acl is leaked for the lifetime of the server.
Fix by adding nfsaclsvc release setacl() and nfs3svc release setacl(), which release both argp->acl access and argp->acl default in addition to fh put(), and wiring them as pc release for their respective SETACL procedures. pc release runs on every path svc process() takes after decode, including decode failure, so the posix acl release() pairs are removed from the proc functions' out: labels to keep ownership in one place. This matches the existing release getacl() pattern used by the sibling GETACL procedures.

Correção

Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾

Identificadores relacionados

CVE-2026-53397

Produtos afetados

Linux