{"id":21622,"date":"2026-09-12T04:31:26","date_gmt":"2026-09-11T20:31:26","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89700"},"modified":"2026-09-12T04:31:26","modified_gmt":"2026-09-11T20:31:26","slug":"cve-2026-89700","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89700","title":{"rendered":"CVE-2026-89700 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: validate sockad"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: validate sockaddr length per family in listener_set<\/p>\n<p>nfsd_sock_nl_policy declares NFSD_A_SOCK_ADDR as a bare NLA_BINARY<br \/>\nattribute with no minimum length. A CAP_NET_ADMIN caller can send a<br \/>\n16-byte NFSD_A_SOCK_ADDR with sa_family=AF_INET6, causing a 12-byte<br \/>\nOOB read across three consumers (rpc_cmp_addr_port, svc_find_listener,<br \/>\nkernel_bind).<\/p>\n<p>nfsd_nl_listener_set_doit() also parsed and validated each listener<br \/>\nentry inline in two separate loops, interleaved with mutating the<br \/>\nrunning listener configuration. The validation was duplicated, used an<br \/>\nopen-coded &#8220;nla_len &lt; sizeof(struct sockaddr)&quot; check that was too short<br \/>\nfor AF_INET6, and handled a malformed entry inconsistently depending on<br \/>\nwhich loop noticed it.<\/p>\n<p>Add an nfsd_nl_validate_listeners() helper that walks the entire list<br \/>\nonce and confirms each entry parses, carries both an address and a<br \/>\ntransport name, and is long enough for its address family<br \/>\n(sizeof(struct sockaddr_in) for AF_INET, sizeof(struct sockaddr_in6)<br \/>\nfor AF_INET6, -EAFNOSUPPORT otherwise). Call it before taking<br \/>\nnfsd_mutex or creating the serv, so a malformed request fails cleanly<br \/>\nwith no side effects.<\/p>\n<p>Since every entry is known valid by the time the two existing loops<br \/>\nrun, drop the redundant presence and per-family length checks from<br \/>\nboth, leaving only the nla_parse_nested() call needed to extract the<br \/>\ndata.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: validate sockaddr length per family in listener_set<\/p>\n<p>nfsd_sock_nl_policy declares NFSD_A_SOCK_ADDR as a bare NLA_BINARY<br \/>\nattri<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21622","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21622","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=21622"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21622"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21622"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}