CVE-2023-53083
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
02/05/2025
Last modified:
05/05/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
nfsd: don&#39;t replace page in rq_pages if it&#39;s a continuation of last page<br />
<br />
The splice read calls nfsd_splice_actor to put the pages containing file<br />
data into the svc_rqst->rq_pages array. It&#39;s possible however to get a<br />
splice result that only has a partial page at the end, if (e.g.) the<br />
filesystem hands back a short read that doesn&#39;t cover the whole page.<br />
<br />
nfsd_splice_actor will plop the partial page into its rq_pages array and<br />
return. Then later, when nfsd_splice_actor is called again, the<br />
remainder of the page may end up being filled out. At this point,<br />
nfsd_splice_actor will put the page into the array _again_ corrupting<br />
the reply. If this is done enough times, rq_next_page will overrun the<br />
array and corrupt the trailing fields -- the rq_respages and<br />
rq_next_page pointers themselves.<br />
<br />
If we&#39;ve already added the page to the array in the last pass, don&#39;t add<br />
it to the array a second time when dealing with a splice continuation.<br />
This was originally handled properly in nfsd_splice_actor, but commit<br />
91e23b1c3982 ("NFSD: Clean up nfsd_splice_actor()") removed the check<br />
for it.
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/0101067f376eb7b9afd00279270f25d5111a091d
- https://git.kernel.org/stable/c/12eca509234acb6b666802edf77408bb70d7bfca
- https://git.kernel.org/stable/c/27c934dd8832dd40fd34776f916dc201e18b319b
- https://git.kernel.org/stable/c/51ddb84baff6f09ad62b5999ece3ec172e4e3568
- https://git.kernel.org/stable/c/8235cd619db6e67f1d7d26c55f1f3e4e575c947d