PT-2026-90416 · Linux · Linux

CVE-2026-89700

·

Published

2026-09-11

·

Updated

2026-09-11

None

No severity ratings or metrics are available. When they are, we'll update the corresponding info on the page.
In the Linux kernel, the following vulnerability has been resolved:
nfsd: validate sockaddr length per family in listener set
nfsd sock nl policy declares NFSD A SOCK ADDR as a bare NLA BINARY attribute with no minimum length. A CAP NET ADMIN caller can send a 16-byte NFSD A SOCK ADDR with sa family=AF INET6, causing a 12-byte OOB read across three consumers (rpc cmp addr port, svc find listener, kernel bind).
nfsd nl listener set doit() also parsed and validated each listener entry inline in two separate loops, interleaved with mutating the running listener configuration. The validation was duplicated, used an open-coded "nla len < sizeof(struct sockaddr)" check that was too short for AF INET6, and handled a malformed entry inconsistently depending on which loop noticed it.
Add an nfsd nl validate listeners() helper that walks the entire list once and confirms each entry parses, carries both an address and a transport name, and is long enough for its address family (sizeof(struct sockaddr in) for AF INET, sizeof(struct sockaddr in6) for AF INET6, -EAFNOSUPPORT otherwise). Call it before taking nfsd mutex or creating the serv, so a malformed request fails cleanly with no side effects.
Since every entry is known valid by the time the two existing loops run, drop the redundant presence and per-family length checks from both, leaving only the nla parse nested() call needed to extract the data.
Found an issue in the description? Have something to add? Feel free to write us 👾

Related Identifiers

CVE-2026-89700

Affected Products

Linux