ZeroHour

CVE-2026-80929

mass

Linux kernel: unprivileged users can alter cad_pid sysctl to signal arbitrary processes

CVSS 3.1
7.8 high
EPSS
Published
()
Modified
AI analysis

A permission-check gap in the Linux kernel's sysctl handling left the kernel.cad_pid entry in pid_table[], whose pid_table_root_permissions() check is satisfied from a child PID/user namespace created via unshare. A local user with a low-privilege account can therefore unshare user and PID namespaces and write to the global cad_pid value, redirecting the kernel's Ctrl-Alt-Del target to an arbitrary process ID. Because cad_pid is global and kill_cad_pid() operates only in the root namespace, this lets the attacker direct kernel-generated signals at processes outside their own namespace, impacting integrity and availability (CVSS 3.1: 7.8, local vector, low privileges required). Any host running an unfixed kernel is potentially affected, with the highest risk on multi-user machines, container hosts, or systems where unprivileged user namespaces are enabled and untrusted local code runs. No public proof of concept is known and the issue is not listed in CISA's KEV catalog.

What to do: Update to a kernel release that includes the fix moving cad_pid into kern_reboot_table[] (apply your distro's latest stable kernel updates). As an interim mitigation on hosts with untrusted local users or containers, restrict unprivileged user namespaces (e.g., set user.max_user_namespaces=0 or your distro's equivalent unprivileged-userns toggle). After patching, verify that writes to /proc/sys/kernel/cad_pid from a non-initial user namespace are rejected and that only global root can modify it.

Affected
Linux kernel
Estimated exposure
masspotentially billions of Linux devices run the kernel, with practical risk concentrated on multi-user and container hosts where unprivileged user namespaces are… — The Linux kernel is deployed on an estimated billions of servers, desktops, and embedded systems worldwide; the practically exposed subset is smaller, limited to systems that permit untrusted local users or containerized workloads to…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: sysctl: move the "cad_pid" entry from pid_table[] to kern_reboot_table[] cad_pid is global, and kill_cad_pid() is only used in the root namespace. However, due to pid_table_root_permissions(), a non-root user can unshare pid/user namespaces and modify it from the child namespace. This makes no sense and is simply wrong. Move it to kern_reboot_table[] where it logically belongs; this ensures that only GLOBAL_ROOT_UID can read/modify this sysctl. Note that this patch doesn't preserve "#ifdef CONFIG_PROC_SYSCTL" around the "cad_pid"; CONFIG_PROC_SYSCTL selects CONFIG_SYSCTL, so it is always set when kern_reboot_table[] is compiled.

Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.