CVE-2026-53397 in Linux
Sumário
de VulDB • 19/07/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
nfsd: corrige vazamento de posix_acl em falha na decodificação SETACL
As funções nfsaclsvc_decode_setaclargs() e nfs3svc_decode_setaclargs() chamam cada uma nfs_stream_decode_acl() duas vezes, primeiro para NFS_ACL e depois para NFS_DFACL. Cada chamada bem-sucedida transfere a propriedade de um posix_acl recém-alocado para argp->acl_access ou argp->acl_default. Se a primeira chamada for bem-sucedida mas a segunda falhar, o decodificador retorna false e argp->acl_access fica com ponteiro pendente (dangling).
ACLPROC2_SETACL.pc_release estava vinculado a nfssvc_release_attrstat e ACLPROC3_SETACL.pc_release estava vinculado a nfs3svc_release_fhandle. Ambos chamam apenas fh_put() e não têm conhecimento dos campos ACL em argp. Os pares posix_acl_release() estavam posicionados nos rótulos out: dentro de nfsacld_proc_setacl() e nfsd3_proc_setacl(), mas svc_process() ignora pc_func quando pc_decode retorna false, tornando essa limpeza inacessível em caso de falha na decodificação:
svc_process_common() pc_decode() /* decode_setaclargs: false */ /* pc_func ignorado */ pc_release() /* apenas fh_put -- ACLs vazadas */
O posix_acl órfão é vaziado durante toda a vida útil do servidor.
Correção adicionando nfsaclsvc_release_setacl() e nfs3svc_release_setacl(), que liberam tanto argp->acl_access quanto argp->acl_default, além de fh_put(), e vinculando-as como pc_release para seus respectivos procedimentos SETACL. pc_release é executado em todos os caminhos que svc_process() segue após a decodificação, incluindo falha na decodificação; portanto, os pares posix_acl_release() são removidos dos rótulos out: das funções proc para manter a propriedade de liberação em um único local. Isso corresponde ao padrão release_getcl() existente usado pelos procedimentos GETACL irmãos.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.