{"id":21473,"date":"2026-09-12T04:31:14","date_gmt":"2026-09-11T20:31:14","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89551"},"modified":"2026-09-12T04:31:14","modified_gmt":"2026-09-11T20:31:14","slug":"cve-2026-89551","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89551","title":{"rendered":"CVE-2026-89551 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nSUNRPC: xdr_buf_trim:"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>SUNRPC: xdr_buf_trim: clamp buf-&gt;len to avoid underflow<\/p>\n<p>xdr_buf_trim() trims `len` bytes from the tail of an xdr_buf by<br \/>\nwalking the tail, pages, and head iovecs.  Each per-section step<br \/>\nuses min_t() so it never removes more bytes than that section<br \/>\nholds, but the final accounting at the fix_len label subtracts the<br \/>\ntotal bytes actually consumed from buf-&gt;len without any clamp:<\/p>\n<p>    fix_len:<br \/>\n            buf-&gt;len -= (len &#8211; trim);<\/p>\n<p>When the caller has set buf-&gt;len to a value smaller than the sum<br \/>\nof the iov_lens, (len &#8211; trim) can exceed buf-&gt;len and the unsigned<br \/>\nsubtraction wraps to near UINT_MAX.  gss_krb5_unwrap_v2() reaches<br \/>\nxdr_buf_trim() in exactly that state:<\/p>\n<p>    buf-&gt;head[0].iov_len -= GSS_KRB5_TOK_HDR_LEN + headskip;<br \/>\n    buf-&gt;len = len &#8211; (GSS_KRB5_TOK_HDR_LEN + headskip);<br \/>\n    xdr_buf_trim(buf, ec + GSS_KRB5_TOK_HDR_LEN + tailskip);<\/p>\n<p>buf-&gt;len is a small wire-derived value while the iov_lens are at<br \/>\npage scale, so the per-section loops legitimately consume far more<br \/>\nbytes than buf-&gt;len records.  The wrapped buf-&gt;len then propagates<br \/>\nas the authoritative stream bound into every downstream XDR<br \/>\ndecoder.<\/p>\n<p>Fix by clamping the decrement so buf-&gt;len bottoms out at zero:<\/p>\n<p>    buf-&gt;len -= min_t(unsigned int, buf-&gt;len, len &#8211; trim);<\/p>\n<p>On the normal path where the iov_lens sum to buf-&gt;len, (len &#8211; trim)<br \/>\nis always len and the result is identical to before.  No<br \/>\ncallers change behavior outside the underflow case.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>SUNRPC: xdr_buf_trim: clamp buf-&gt;len to avoid underflow<\/p>\n<p>xdr_buf_trim() trims `len` bytes from the tail of an xdr_buf by<br \/>\nwalking th<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21473","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21473","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=21473"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21473"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}