CVE-2026-53397 in Linux信息

摘要

由 VulDB • 2026-07-19

在 Linux 内核中,已修复以下漏洞:

nfsd:修复 SETACL 解码失败时的 posix_acl 泄漏问题

`nfsaclsvc_decode_setaclargs()` 和 `nfs3svc_decode_setaclargs()` 均调用两次 `nfs_stream_decode_acl()`,首先针对 NFS_ACL,然后针对 NFS_DFACL。每次成功的调用都会将新分配的 posix_acl 的所有权转移给 argp->acl_access 或 argp->acl_default。如果第一次调用成功但第二次失败,解码器返回 false,导致 argp->acl_access 悬空(dangling)。

`ACLPROC2_SETACL.pc_release` 被绑定到 `nfssvc_release_attrstat`,而 `ACLPROC3_SETACL.pc_release` 被绑定到 `nfs3svc_release_fhandle`。两者仅调用 `fh_put()`,且对 argp 上的 ACL 字段一无所知。`posix_acl_release()` 配对位于 `nfsacld_proc_setacl()` 和 `nfsd3_proc_setacl()` 内部的 out: 标签处,但由于当 pc_decode 返回 false 时 svc_process() 会跳过 pc_func,因此在解码失败时该清理代码不可达:

svc_process_common() pc_decode() /* decode_setaclargs: false */ /* 跳过 pc_func */ pc_release() /* 仅执行 fh_put -- ACLs 泄漏 */

孤立的 posix_acl 会在服务器生命周期内发生泄漏。

修复方法是通过添加 `nfsaclsvc_release_setacl()` 和 `nfs3svc_release_setacl()`,除了调用 `fh_put()` 外,还释放 argp->acl_access 和 argp->acl_default,并将它们作为各自 SETACL 过程的 pc_release 进行绑定。pc_release 在 svc_process() 解码后的每条路径上运行,包括解码失败的情况,因此从过程函数的 out: 标签中移除 posix_acl_release() 配对,以保持所有权集中在一个位置。这与兄弟 GETACL 过程中使用的现有 release_getacl() 模式相匹配。

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

来源

Want to stay up to date on a daily basis?

Enable the mail alert feature now!