PT-2026-61102 · Linux · Linux
CVE-2026-53397
·
Publicado
2026-07-19
·
Atualizado
2026-07-19
CVSS v3.1
7.5
Alta
| Vetor | AV: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
Produtos afetados
Linux