CVE-2021-47227
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
21/05/2024
Last modified:
29/04/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
x86/fpu: Prevent state corruption in __fpu__restore_sig()<br />
<br />
The non-compacted slowpath uses __copy_from_user() and copies the entire<br />
user buffer into the kernel buffer, verbatim. This means that the kernel<br />
buffer may now contain entirely invalid state on which XRSTOR will #GP.<br />
validate_user_xstate_header() can detect some of that corruption, but that<br />
leaves the onus on callers to clear the buffer.<br />
<br />
Prior to XSAVES support, it was possible just to reinitialize the buffer,<br />
completely, but with supervisor states that is not longer possible as the<br />
buffer clearing code split got it backwards. Fixing that is possible but<br />
not corrupting the state in the first place is more robust.<br />
<br />
Avoid corruption of the kernel XSAVE buffer by using copy_user_to_xstate()<br />
which validates the XSAVE header contents before copying the actual states<br />
to the kernel. copy_user_to_xstate() was previously only called for<br />
compacted-format kernel buffers, but it works for both compacted and<br />
non-compacted forms.<br />
<br />
Using it for the non-compacted form is slower because of multiple<br />
__copy_from_user() operations, but that cost is less important than robust<br />
code in an already slow path.<br />
<br />
[ Changelog polished by Dave Hansen ]
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
CPE | From | Up to |
---|---|---|
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.8 (including) | 5.10.46 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.12.13 (excluding) |
cpe:2.3:o:linux:linux_kernel:5.13:rc1:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.13:rc2:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.13:rc3:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.13:rc4:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.13:rc5:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:5.13: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/076f732b16a5bf842686e1b43ab6021a2d98233e
- https://git.kernel.org/stable/c/484cea4f362e1eeb5c869abbfb5f90eae6421b38
- https://git.kernel.org/stable/c/ec25ea1f3f05d6f8ee51d1277efea986eafd4f2a
- https://git.kernel.org/stable/c/076f732b16a5bf842686e1b43ab6021a2d98233e
- https://git.kernel.org/stable/c/484cea4f362e1eeb5c869abbfb5f90eae6421b38
- https://git.kernel.org/stable/c/ec25ea1f3f05d6f8ee51d1277efea986eafd4f2a