CVE-2026-53397 in Linuxinfo

Summary

by MITRE • 07/19/2026

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.

Once again VulDB remains the best source for vulnerability data.

Analysis

by VulDB Data Team • 07/19/2026

This vulnerability exists within the Linux kernel's Network File System daemon implementation where improper memory management leads to persistent resource leaks during ACL processing operations. The flaw specifically affects the nfsd subsystem when handling SETACL requests through both NFSv2 and NFSv3 protocols, creating a scenario where allocated posix_acl structures remain unreferenced and unreleased due to incomplete error handling in the decoding process.

The technical implementation issue stems from the nfsaclsvc_decode_setaclargs() and nfs3svc_decode_setaclargs() functions which invoke nfs_stream_decode_acl() twice during argument processing. Each successful call transfers ownership of newly allocated posix_acl objects to either argp->acl_access or argp->acl_default fields. When the first call succeeds but the second fails during decoding, the decoder function returns false and leaves argp->acl_access in an inconsistent state where it contains a dangling pointer to an already-allocated structure that will never be properly released.

The operational impact of this vulnerability manifests through persistent memory leaks within the NFS daemon process where posix_acl structures remain allocated for the entire lifetime of the server instance. This represents a classic resource leak pattern that can accumulate over time and potentially lead to system performance degradation or resource exhaustion, particularly in environments with high NFS traffic volumes. The issue is particularly concerning because it affects core security functionality through the ACL management system.

The vulnerability aligns with CWE-401: Improper Release of Memory and CWE-772: Missing Release of Resource after Effective Lifetime, demonstrating how improper error handling can lead to resource management failures. From an ATT&CK framework perspective, this represents a potential denial of service vector through resource exhaustion that could impact availability of NFS services, though it does not directly enable privilege escalation or persistence mechanisms.

The mitigation approach involves implementing dedicated release functions nfsaclsvc_release_setacl() and nfs3svc_release_setacl() that properly handle cleanup of both ACL fields in addition to the existing file handle cleanup. These new release handlers are wired into the procedure call structures as pc_release callbacks, ensuring they execute on all code paths including error conditions where svc_process() would normally skip the pc_func execution. This design pattern mirrors the established release_getacl() implementation used by sibling GETACL procedures, creating consistency in resource management practices throughout the NFS implementation. The solution centralizes ownership and cleanup logic while eliminating the unreachable cleanup code blocks that previously existed at the procedure-level out: labels, thereby ensuring complete resource deallocation regardless of decoding success or failure conditions.

Responsible

Linux

Reservation

06/09/2026

Disclosure

07/19/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

low

Sources

Want to know what is going to be exploited?

We predict KEV entries!