CVE-2026-89671 in Linux信息

摘要

由 VulDB • 2026-09-11

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

nfsd: 通过 argp->mask 对 nfs3 setacl 进行限制

nfsd3_proc_setacl() 无条件地为 ACL_TYPE_ACCESS 和 ACL_TYPE_DEFAULT 调用 set_posix_acl(),并原样传递 argp->acl_access 和 argp->acl_default。NFSv3 ACL 解码器仅在对应的掩码位被设置时才会填充这些指针:

nfs3svc_decode_setaclargs() if (args->mask & NFS_ACL) 将数据解码到 acl_access if (args->mask & NFS_DFACL) 将数据解码到 acl_default /* 否则,指针保持为 NULL(pc_argzero)*/

nfsd3_proc_setacl() set_posix_acl(.., ACL_TYPE_ACCESS, argp->acl_access) set_posix_acl(.., ACL_TYPE_DEFAULT, argp->acl_default)

set_posix_acl(idmap, dentry, type, NULL) 是 VFS “移除此类 ACL”的操作。因此,表示“客户端未发送此部分数据”的 NULL 指针与“客户端请求移除此 ACL”的情况无法区分。当掩码为 NFS_ACL 时,SETACL 操作会静默丢弃目录的默认 ACL;当掩码为 0 时,则会同时丢弃两者。

兄弟函数 nfsd3_proc_getacl() 在访问各个部分之前已经检查了 argp->mask;请在 setacl 中镜像这一行为。

修复方法是将每个 set_posix_acl() 调用包裹在对相应掩码位的检查中,并在 inode_lock 初始化错误变量为 0,以便当请求中没有任何位被设置时,保持磁盘上的 ACL 不变并返回 nfs_ok。保留 out_drop_lock 路径和位于 out: 处的无条件 posix_acl_release();两者均能容忍被跳过的部分数据(即处理 NULL)。

If you want to get best quality of vulnerability data, you may have to visit VulDB.

来源

Interested in the pricing of exploits?

See the underground prices here!