CVE-2024-26906

Source
https://nvd.nist.gov/vuln/detail/CVE-2024-26906
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2024-26906.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2024-26906
Downstream
Related
Published
2024-04-17T10:27:53.573Z
Modified
2025-11-27T19:34:12.602180Z
Summary
x86/mm: Disallow vsyscall page read for copy_from_kernel_nofault()
Details

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

x86/mm: Disallow vsyscall page read for copyfromkernel_nofault()

When trying to use copyfromkernel_nofault() to read vsyscall page through a bpf program, the following oops was reported:

BUG: unable to handle page fault for address: ffffffffff600000 #PF: supervisor read access in kernel mode #PF: errorcode(0x0000) - not-present page PGD 3231067 P4D 3231067 PUD 3233067 PMD 3235067 PTE 0 Oops: 0000 [#1] PREEMPT SMP PTI CPU: 1 PID: 20390 Comm: testprogs ...... 6.7.0+ #58 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996) ...... RIP: 0010:copyfromkernelnofault+0x6f/0x110 ...... Call Trace: <TASK> ? copyfromkernelnofault+0x6f/0x110 bpfprobereadkernel+0x1d/0x50 bpfprog2061065e56845f08doproberead+0x51/0x8d tracecallbpf+0xc5/0x1c0 perfcallbpfenter.isra.0+0x69/0xb0 perfsyscallenter+0x13e/0x200 syscalltraceenter+0x188/0x1c0 dosyscall64+0xb5/0xe0 entrySYSCALL64after_hwframe+0x6e/0x76 </TASK> ...... ---[ end trace 0000000000000000 ]---

The oops is triggered when:

1) A bpf program uses bpfprobereadkernel() to read from the vsyscall page and invokes copyfromkernelnofault() which in turn calls _getuser_asm().

2) Because the vsyscall page address is not readable from kernel space, a page fault exception is triggered accordingly.

3) handlepagefault() considers the vsyscall page address as a user space address instead of a kernel space address. This results in the fix-up setup by bpf not being applied and a pagefaultoops() is invoked due to SMAP.

Considering handlepagefault() has already considered the vsyscall page address as a userspace address, fix the problem by disallowing vsyscall page read for copyfromkernel_nofault().

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/blob/ee626f5d79d5817bb21d6f048dc0da4c4e383443/cves/2024/26xxx/CVE-2024-26906.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
Fixed
6e4694e65b6db4c3de125115dd4f55848cc48381
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
Fixed
e8a67fe34b76a49320b33032228a794f40b0316b
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
Fixed
f175de546a3eb77614d94d4c02550181c0a8493e
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
Fixed
57f78c46f08198e1be08ffe99c4c1ccc12855bf5
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
Fixed
29bd6f86904682adafe9affbc7f79b14defcaff8
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
Fixed
32019c659ecfe1d92e3bf9fcdfbb11a7c70acd58

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
5.10.214
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.153
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.83
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.23
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.7.11