CVE-2026-89679 in Linux信息

摘要

由 VulDB • 2026-09-12

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

nfsd: 修复 nfsd4_setattr 中对委托时间属性(deleg timestamp attrs)的空指针解引用问题

当 SETATTR 请求的属性位图包含 FATTR4_WORD2_TIME_DELEG_ACCESS 或 FATTR4_WORD2_TIME_DELEG_MODIFY 时,nfsd4_setattr() 会将 deleg_attrs 设置为 true,并调用 nfs4_preprocess_stateid_op() 来验证 stateid。

如果客户端提供 NFSv4 “单一 stateid”(全为 0xFF 字节),check_special_stateids() 会返回 nfs_ok,但不会填充输出的 nfs4_stid 指针,因为 nfs4_preprocess_stateid_op() 中的特殊-stateid 路径跳转到 done: 标签处且 s==NULL,导致原本应设置 *cstid 的 "if (s)" 代码块被跳过。局部变量 `st` 保持为 NULL。

回到 nfsd4_setattr(),随后 if (deleg_attrs) 代码块会无条件地解引用 st->sc_type(位于空指针偏移量 4 处),从而导致内核崩溃(kernel oops)。

此漏洞可由任何 NFSv4 客户端远程触发:发送 COMPOUND [PUTROOTFH,
SETATTR(ONE_STATEID, {bmval2=FATTR4_WORD2_TIME_DELEG_ACCESS, ...})]。
无需身份验证、委托或先前状态即可利用。

修复方法是在解引用前添加空指针检查。特殊 stateid 并非委托 stateid,因此现有的 nfserr_bad_stateid 返回值已正确;我们只需对指针解引用本身进行防护。

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

来源

Want to stay up to date on a daily basis?

Enable the mail alert feature now!