CVE-2021-47107
Severity CVSS v4.0:
Pending analysis
Type:
CWE-120
Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')
Publication date:
04/03/2024
Last modified:
14/02/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
NFSD: Fix READDIR buffer overflow<br />
<br />
If a client sends a READDIR count argument that is too small (say,<br />
zero), then the buffer size calculation in the new init_dirlist<br />
helper functions results in an underflow, allowing the XDR stream<br />
functions to write beyond the actual buffer.<br />
<br />
This calculation has always been suspect. NFSD has never sanity-<br />
checked the READDIR count argument, but the old entry encoders<br />
managed the problem correctly.<br />
<br />
With the commits below, entry encoding changed, exposing the<br />
underflow to the pointer arithmetic in xdr_reserve_space().<br />
<br />
Modern NFS clients attempt to retrieve as much data as possible<br />
for each READDIR request. Also, we have no unit tests that<br />
exercise the behavior of READDIR at the lower bound of @count<br />
values. Thus this case was missed during testing.
Impact
Base Score 3.x
7.80
Severity 3.x
HIGH
Vulnerable products and versions
CPE | From | Up to |
---|---|---|
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.13 (including) | 5.15.12 (excluding) |
cpe:2.3:o:linux:linux_kernel:5.16:rc1:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.16:rc2:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.16:rc3:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.16:rc4:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.16:rc5:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.16:rc6:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/53b1119a6e5028b125f431a0116ba73510d82a72
- https://git.kernel.org/stable/c/9e291a6a28d32545ed2fd959a8165144d1724df1
- https://git.kernel.org/stable/c/eabc0aab98e5218ceecd82069b0d6fdfff5ee885
- https://git.kernel.org/stable/c/53b1119a6e5028b125f431a0116ba73510d82a72
- https://git.kernel.org/stable/c/9e291a6a28d32545ed2fd959a8165144d1724df1
- https://git.kernel.org/stable/c/eabc0aab98e5218ceecd82069b0d6fdfff5ee885