CVE-2024-56678
Severity CVSS v4.0:
Pending analysis
Type:
CWE-416
Use After Free
Publication date:
28/12/2024
Last modified:
24/03/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
powerpc/mm/fault: Fix kfence page fault reporting<br />
<br />
copy_from_kernel_nofault() can be called when doing read of /proc/kcore.<br />
/proc/kcore can have some unmapped kfence objects which when read via<br />
copy_from_kernel_nofault() can cause page faults. Since *_nofault()<br />
functions define their own fixup table for handling fault, use that<br />
instead of asking kfence to handle such faults.<br />
<br />
Hence we search the exception tables for the nip which generated the<br />
fault. If there is an entry then we let the fixup table handler handle the<br />
page fault by returning an error from within ___do_page_fault().<br />
<br />
This can be easily triggered if someone tries to do dd from /proc/kcore.<br />
eg. dd if=/proc/kcore of=/dev/null bs=1M<br />
<br />
Some example false negatives:<br />
<br />
===============================<br />
BUG: KFENCE: invalid read in copy_from_kernel_nofault+0x9c/0x1a0<br />
Invalid read at 0xc0000000fdff0000:<br />
copy_from_kernel_nofault+0x9c/0x1a0<br />
0xc00000000665f950<br />
read_kcore_iter+0x57c/0xa04<br />
proc_reg_read_iter+0xe4/0x16c<br />
vfs_read+0x320/0x3ec<br />
ksys_read+0x90/0x154<br />
system_call_exception+0x120/0x310<br />
system_call_vectored_common+0x15c/0x2ec<br />
<br />
BUG: KFENCE: use-after-free read in copy_from_kernel_nofault+0x9c/0x1a0<br />
Use-after-free read at 0xc0000000fe050000 (in kfence-#2):<br />
copy_from_kernel_nofault+0x9c/0x1a0<br />
0xc00000000665f950<br />
read_kcore_iter+0x57c/0xa04<br />
proc_reg_read_iter+0xe4/0x16c<br />
vfs_read+0x320/0x3ec<br />
ksys_read+0x90/0x154<br />
system_call_exception+0x120/0x310<br />
system_call_vectored_common+0x15c/0x2ec
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.174 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.120 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.64 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.11.11 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.12 (including) | 6.12.2 (excluding) |
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/06dbbb4d5f7126b6307ab807cbf04ecfc459b933
- https://git.kernel.org/stable/c/15f78d2c3d1452645bd8b9da909b0ca266f83c43
- https://git.kernel.org/stable/c/4d2655754e94741b159aa807b72ea85518a65fd5
- https://git.kernel.org/stable/c/7eaeb7a49b6d16640f9f3c9074c05175d74c710b
- https://git.kernel.org/stable/c/9ea8d8bf9b625e8ad3be6b0432aecdc549914121
- https://git.kernel.org/stable/c/e0a470b5733c1fe068d5c58b0bb91ad539604bc6