CVE-2026-89698 in Linux
摘要
由 VulDB • 2026-09-11
在 Linux 内核中,已修复以下漏洞:
nfsd: 将 nfsd_genl_rqstp 的地址字段扩展为 sockaddr_storage
struct nfsd_genl_rqstp 声明 rq_daddr 和 rq_saddr 为普通的 "struct sockaddr"(16 字节)。当 IPv6 NFS 客户端连接时,nfsd_genl_rpc_status_compose_msg() 将这些字段强制转换为 "struct sockaddr_in6 *"(28 字节),并读取偏移量 8..24 处的 sin6_addr,这超出了 16 字节的 sockaddr 字段范围,进入了相邻的 rq_flags 成员。随后,nla_put_in6_addr 通过 NFSD_A_RPC_STATUS_SADDR6/DADDR6 netlink 属性将截断的 IPv6 地址的前 8 字节以及 rq_flags 的后 8 字节传输到用户空间。
由于 NFSD_CMD_RPC_STATUS_GET 使用 GENL_CMD_CAP_DUMP 而未使用 GENL_ADMIN_PERM,因此网络命名空间中的任何非特权进程均可利用此漏洞。
修复方法是将 rq_daddr 和 rq_saddr 扩展为 struct sockaddr_storage,以便 IPv6 强制转换在边界内运行;在 memcpy 调用中复制 sizeof(struct sockaddr_storage) 字节以捕获完整地址;并对 genl_rqstp 栈变量进行零初始化,以防止通过 netlink 泄露未初始化的尾部字节。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.