CVE-2024-56678

powerpc/mm/fault: Fix kfence page fault reporting

High · published December 28, 2024

CVSS v3.1
7.8
EPSS
0%
Percentile
12.4
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

powerpc/mm/fault: Fix kfence page fault reporting

copy_from_kernel_nofault() can be called when doing read of /proc/kcore.

/proc/kcore can have some unmapped kfence objects which when read via

copy_from_kernel_nofault() can cause page faults. Since *_nofault()

functions define their own fixup table for handling fault, use that

instead of asking kfence to handle such faults.

Hence we search the exception tables for the nip which generated the

fault. If there is an entry then we let the fixup table handler handle the

page fault by returning an error from within ___do_page_fault().

This can be easily triggered if someone tries to do dd from /proc/kcore.

eg. dd if=/proc/kcore of=/dev/null bs=1M

Some example false negatives:

===============================

BUG: KFENCE: invalid read in copy_from_kernel_nofault+0x9c/0x1a0

Invalid read at 0xc0000000fdff0000:

copy_from_kernel_nofault+0x9c/0x1a0

0xc00000000665f950

read_kcore_iter+0x57c/0xa04

proc_reg_read_iter+0xe4/0x16c

vfs_read+0x320/0x3ec

ksys_read+0x90/0x154

system_call_exception+0x120/0x310

system_call_vectored_common+0x15c/0x2ec

BUG: KFENCE: use-after-free read in copy_from_kernel_nofault+0x9c/0x1a0

Use-after-free read at 0xc0000000fe050000 (in kfence-#2):

copy_from_kernel_nofault+0x9c/0x1a0

0xc00000000665f950

read_kcore_iter+0x57c/0xa04

proc_reg_read_iter+0xe4/0x16c

vfs_read+0x320/0x3ec

ksys_read+0x90/0x154

system_call_exception+0x120/0x310

system_call_vectored_common+0x15c/0x2ec

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00225 · 12.4th percentile
Published
2024-12-28T09:46Z
EPSS history
Timeline
  • 28 DEC 09:46Z
    powerpc/mm/fault: Fix kfence page fault reporting
    cvelistv5