Skip to content
OpenAdvisories
Unscored CVE-2024-35871 EUVD-2024-35589GHSA-wjqf-4c62-v6g5

riscv: process: Fix kernel gp leakage

Published May 19, 2024 · Updated May 11, 2026 · Assigned by Linux

Vendor: Linux Product: Linux Package: linux Package: linux Package: linux-allwinner-5.19 Package: linux-aws Package: linux-aws-5.0 Package: linux-aws-5.11 Package: linux-aws-5.13 Package: linux-aws-5.15 Package: linux-aws-5.19 Package: linux-aws-5.3 Package: linux-aws-5.4 Package: linux-aws-5.8 Package: linux-aws-6.2 Package: linux-aws-6.5 Package: linux-aws-6.8 Package: linux-aws-fips Package: linux-aws-hwe Package: linux-azure Package: linux-azure-4.15 Package: linux-azure-5.11 Package: linux-azure-5.13 Package: linux-azure-5.15 Package: linux-azure-5.19 Package: linux-azure-5.3 Package: linux-azure-5.4 Package: linux-azure-5.8 Package: linux-azure-6.2 Package: linux-azure-6.5 Package: linux-azure-6.8 Package: linux-azure-edge Package: linux-azure-fde Package: linux-azure-fde-5.19 Package: linux-azure-fde-6.2 Package: linux-azure-fips Package: linux-bluefield Package: linux-fips Package: linux-gcp Package: linux-gcp-4.15 Package: linux-gcp-5.11 Package: linux-gcp-5.13 Package: linux-gcp-5.15 Package: linux-gcp-5.19 Package: linux-gcp-5.3 Package: linux-gcp-5.4 Package: linux-gcp-5.8 Package: linux-gcp-6.2 Package: linux-gcp-6.5 Package: linux-gcp-fips Package: linux-gke Package: linux-gke-4.15 Package: linux-gke-5.15 Package: linux-gke-5.4 Package: linux-gkeop Package: linux-gkeop-5.15 Package: linux-gkeop-5.4 Package: linux-hwe Package: linux-hwe-5.11 Package: linux-hwe-5.13 Package: linux-hwe-5.15 Package: linux-hwe-5.19 Package: linux-hwe-5.4 Package: linux-hwe-5.8 Package: linux-hwe-6.2 Package: linux-hwe-6.5 Package: linux-hwe-edge Package: linux-ibm Package: linux-ibm-5.15 Package: linux-ibm-5.4 Package: linux-intel Package: linux-intel-5.13 Package: linux-intel-iot-realtime Package: linux-intel-iotg Package: linux-intel-iotg-5.15 Package: linux-iot Package: linux-kvm Package: linux-lowlatency Package: linux-lowlatency-hwe-5.15 Package: linux-lowlatency-hwe-5.19 Package: linux-lowlatency-hwe-6.2 Package: linux-lowlatency-hwe-6.5 Package: linux-nvidia Package: linux-nvidia-6.2 Package: linux-nvidia-6.5 Package: linux-nvidia-6.8 Package: linux-nvidia-tegra Package: linux-nvidia-tegra-5.15 Package: linux-nvidia-tegra-igx Package: linux-oem Package: linux-oem-5.10 Package: linux-oem-5.13 Package: linux-oem-5.14 Package: linux-oem-5.17 Package: linux-oem-5.6 Package: linux-oem-6.0 Package: linux-oem-6.1 Package: linux-oem-6.5 Package: linux-oem-6.8 Package: linux-oracle Package: linux-oracle-5.0 Package: linux-oracle-5.11 Package: linux-oracle-5.13 Package: linux-oracle-5.15 Package: linux-oracle-5.3 Package: linux-oracle-5.4 Package: linux-oracle-5.8 Package: linux-oracle-6.5 Package: linux-oracle-6.8 Package: linux-raspi Package: linux-raspi-5.4 Package: linux-raspi-realtime Package: linux-raspi2 Package: linux-realtime Package: linux-riscv Package: linux-riscv-5.11 Package: linux-riscv-5.15 Package: linux-riscv-5.19 Package: linux-riscv-5.8 Package: linux-riscv-6.5 Package: linux-starfive-5.19 Package: linux-starfive-6.2 Package: linux-starfive-6.5 Package: linux-vmware Package: linux-xilinx-zynqmp Platform: Linux Ecosystem: Debian Ecosystem: Ubuntu

Description

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

riscv: process: Fix kernel gp leakage

childregs represents the registers which are active for the new thread
in user context. For a kernel thread, childregs->gp is never used since
the kernel gp is not touched by switch_to. For a user mode helper, the
gp value can be observed in user space after execve or possibly by other
means.

[From the email thread]

The /* Kernel thread */ comment is somewhat inaccurate in that it is also used
for user_mode_helper threads, which exec a user process, e.g. /sbin/init or
when /proc/sys/kernel/core_pattern is a pipe. Such threads do not have
PF_KTHREAD set and are valid targets for ptrace etc. even before they exec.

childregs is the *user* context during syscall execution and it is observable
from userspace in at least five ways:

1. kernel_execve does not currently clear integer registers, so the starting
register state for PID 1 and other user processes started by the kernel has
sp = user stack, gp = kernel __global_pointer$, all other integer registers
zeroed by the memset in the patch comment.

This is a bug in its own right, but I'm unwilling to bet that it is the only
way to exploit the issue addressed by this patch.

2. ptrace(PTRACE_GETREGSET): you can PTRACE_ATTACH to a user_mode_helper thread
before it execs, but ptrace requires SIGSTOP to be delivered which can only
happen at user/kernel boundaries.

3. /proc/*/task/*/syscall: this is perfectly happy to read pt_regs for
user_mode_helpers before the exec completes, but gp is not one of the
registers it returns.

4. PERF_SAMPLE_REGS_USER: LOCKDOWN_PERF normally prevents access to kernel
addresses via PERF_SAMPLE_REGS_INTR, but due to this bug kernel addresses
are also exposed via PERF_SAMPLE_REGS_USER which is permitted under
LOCKDOWN_PERF. I have not attempted to write exploit code.

5. Much of the tracing infrastructure allows access to user registers. I have
not attempted to determine which forms of tracing allow access to user
registers without already allowing access to kernel registers.

Affected products

VendorProductAffectedFixed
Linux Linux 4.15 5.10.216

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 linux 6.8.9-1 —
Debian 13 linux 6.8.9-1 —
Debian 12 linux 6.1.85-1 —
Debian 10 linux-5.10 5.10.216-1~deb10u1 DLA-3842-1
ReleasePackageFixed inAdvisory
Ubuntu Nvidia-BlueField 22.04 LTS linux-bluefield 5.15.0-1047.49 —
Ubuntu 24.04 LTS linux 6.8.0-38.38 USN-6893-1
Ubuntu 24.04 LTS linux-aws 6.8.0-1011.12 USN-6893-3
Ubuntu 24.04 LTS linux-azure 6.8.0-1010.10 USN-6893-1
Ubuntu 24.04 LTS linux-gcp 6.8.0-1010.11 USN-6893-1
Ubuntu 24.04 LTS linux-gke 6.8.0-1006.9 USN-6893-2
Ubuntu 24.04 LTS linux-ibm +2 6.8.0-1008.8 USN-6918-1, USN-6893-1
Ubuntu 24.04 LTS linux-intel 6.8.0-1007.14 USN-6893-1
Ubuntu 24.04 LTS linux-nvidia 6.8.0-1009.9 USN-6893-2
Ubuntu 24.04 LTS linux-raspi 6.8.0-1007.7 USN-6893-1
Ubuntu 24.04 LTS linux-riscv +1 6.8.0-38.38.1 USN-6893-1
Ubuntu 22.04 LTS linux +1 5.15.0-116.126 USN-6898-2, USN-6898-1
Ubuntu 22.04 LTS linux-aws 5.15.0-1065.71 USN-6898-3
Ubuntu 22.04 LTS linux-aws-6.8 6.8.0-1011.12~22.04.1 —
Ubuntu 22.04 LTS linux-azure 5.15.0-1068.77 USN-6917-1
Ubuntu 22.04 LTS linux-azure-6.8 6.8.0-1010.10~22.04.1 —
Ubuntu 22.04 LTS linux-azure-fde 5.15.0-1068.77.1 USN-6917-1
Ubuntu 22.04 LTS linux-gcp 5.15.0-1064.72 USN-6898-1
Ubuntu 22.04 LTS linux-gke 5.15.0-1062.68 USN-6898-1
Ubuntu 22.04 LTS linux-gkeop 5.15.0-1048.55 USN-6898-1
Ubuntu 22.04 LTS linux-ibm +1 5.15.0-1058.61 USN-6919-1, USN-6898-1
Ubuntu 22.04 LTS linux-intel-iotg 5.15.0-1060.66 USN-6898-1
Ubuntu 22.04 LTS linux-kvm 5.15.0-1062.67 USN-6898-1
Ubuntu 22.04 LTS linux-nvidia 5.15.0-1060.61 USN-6898-1
Ubuntu 22.04 LTS linux-nvidia-6.8 6.8.0-1009.9~22.04.1 —
Ubuntu 22.04 LTS linux-nvidia-tegra 5.15.0-1026.26 —
Ubuntu 22.04 LTS linux-nvidia-tegra-igx 5.15.0-1015.15 —
Ubuntu 22.04 LTS linux-oracle 5.15.0-1063.69 USN-6898-1
Ubuntu 22.04 LTS linux-oracle-6.8 6.8.0-1008.8~22.04.1 —
Ubuntu 22.04 LTS linux-riscv +31 No fix yet —
Ubuntu 22.04 LTS linux-xilinx-zynqmp 5.15.0-1035.39 USN-7019-1
Ubuntu 20.04 LTS linux-aws-5.15 5.15.0-1065.71~20.04.1 USN-6898-4
Ubuntu 20.04 LTS linux-azure-5.15 5.15.0-1068.77~20.04.1 USN-6917-1
Ubuntu 20.04 LTS linux-azure-fde-5.15 5.15.0-1068.77~20.04.1.1 USN-6917-1
Ubuntu 20.04 LTS linux-gcp-5.15 5.15.0-1065.73~20.04.1 USN-6927-1
Ubuntu 20.04 LTS linux-gke +27 No fix yet —
Ubuntu 20.04 LTS linux-gkeop-5.15 5.15.0-1048.55~20.04.1 USN-6898-1
Ubuntu 20.04 LTS linux-hwe-5.15 +1 5.15.0-116.126~20.04.1 USN-6898-3, USN-6898-2
Ubuntu 20.04 LTS linux-ibm-5.15 5.15.0-1058.61~20.04.1 USN-6898-2
Ubuntu 20.04 LTS linux-intel-iotg-5.15 5.15.0-1060.66~20.04.1 USN-6898-1
Ubuntu 20.04 LTS linux-nvidia-tegra-5.15 5.15.0-1027.27~20.04.1 —
Ubuntu 20.04 LTS linux-oracle-5.15 5.15.0-1063.69~20.04.1 USN-6898-2
Ubuntu 20.04 LTS linux-riscv-5.15 5.15.0-1061.65~20.04.1 —
Ubuntu 18.04 LTS linux-gcp +14 No fix yet —
Show 13 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu 16.04 LTS linux-hwe-edge No fix yet —
Ubuntu Pro Realtime 24.04 LTS linux-raspi-realtime 6.8.0-2006.6 —
Ubuntu Pro Realtime 24.04 LTS linux-realtime 6.8.1-1004.4 —
Ubuntu Pro Realtime 22.04 LTS linux-intel-iot-realtime 5.15.0-1058.60 —
Ubuntu Pro Realtime 22.04 LTS linux-realtime 5.15.0-1066.74 —
Ubuntu Pro FIPS 20.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS 18.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS-updates 22.04 LTS linux-aws-fips 5.15.0-1065.71+fips1 —
Ubuntu Pro FIPS-updates 22.04 LTS linux-azure-fips 5.15.0-1068.77+fips1 —
Ubuntu Pro FIPS-updates 22.04 LTS linux-fips 5.15.0-115.125+fips1 —
Ubuntu Pro FIPS-updates 22.04 LTS linux-gcp-fips 5.15.0-1064.72+fips1 —
Ubuntu Pro FIPS-updates 20.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS-updates 18.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro FIPS-preview 22.04 LTS linux-fips +3 No fix yet —
Ubuntu Pro 20.04 LTS linux +10 No fix yet —
Ubuntu Pro 18.04 LTS linux +12 No fix yet —
Ubuntu Pro 16.04 LTS linux-gcp +4 No fix yet —
Ubuntu Pro 14.04 LTS linux-azure No fix yet —

Advisories 14

References