Cloudanix VulnDB

CVE-2026-46259

High · 7.8

CVSS

7.8

EPSS

0.2%

Published

Jun 3, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A flaw in Linux can let someone who already has limited access to a machine potentially take it over or crash it, so affected systems should be updated.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Low
Impact
Privilege Gain
Component
OS kernel
Class
Use After Free
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

CVE-2026-46259 is a local Linux kernel use-after-free vulnerability in procfs handling of /proc/[pid]/stat. The vulnerable do_task_stat() path reads a task's real_parent pointer without holding the required RCU protection, creating a race with task teardown via release_task() and delayed_put_task_struct(). A local authenticated user who can repeatedly read /proc process status while processes are exiting may be able to trigger stale task_struct access. Because the flaw occurs in kernel context, successful exploitation could potentially cause kernel memory corruption, privilege escalation, information disclosure, or system crash, consistent with the CVSS impact of high confidentiality, integrity, and availability loss.

Why it matters to the business

Successful exploitation could allow a user or compromised low-privilege workload on a Linux system to gain elevated privileges or destabilize the host. This is most concerning on multi-user servers, shared compute platforms, container hosts, CI/CD runners, and systems where untrusted local code can execute. Although the vulnerability is not listed in CISA KEV, has low EPSS, and no public exploit maturity is reported, the CVSS score is high because a reliable exploit could fully compromise the affected host.

How an attack unfolds

An attacker first needs local code execution with ordinary user privileges on an affected Linux kernel. They then attempt to win a race between reading /proc/[pid]/stat and causing the referenced parent task to exit and be freed through the kernel's RCU-delayed cleanup path. In the vulnerable path, do_task_stat() captures task->real_parent before the appropriate RCU read-side protection is in place; if the parent task is released at the right time, later dereferencing can operate on freed memory. A practical exploit would repeatedly create and terminate process hierarchies while concurrently reading procfs status files to trigger the stale pointer access. Depending on allocator behavior, kernel hardening, and exploit reliability, the outcome may range from a kernel oops or denial of service to controlled memory corruption that enables privilege escalation.

How to fix it

Upgrade to a Linux kernel version that includes the procfs fix replacing the unsafe task_tgid_nr_ns(task->real_parent) style access with task_ppid_nr_ns(), ensuring proper RCU protection around real_parent access. If vendor-specific fixed versions are not available, apply the latest stable kernel updates from the operating system or distribution vendor once they include the upstream fix. Reboot systems after kernel installation so the patched kernel is active. As interim mitigations, reduce opportunities for local exploitation by limiting shell or workload access for untrusted users, isolating untrusted workloads, enabling kernel hardening features provided by the distribution, and using controls such as SELinux/AppArmor, seccomp, container isolation, and least-privilege service accounts. These mitigations reduce exposure but do not replace applying the fixed kernel.

How to confirm the fix worked

Confirm exposure by inventorying Linux hosts and comparing the running kernel, not only the installed package, against vendor advisories for CVE-2026-46259. Validate that systems have booted into a patched kernel using commands such as uname -r and package-manager kernel version queries. Where source validation is applicable, confirm that the procfs do_task_stat() implementation uses task_ppid_nr_ns() or otherwise protects real_parent access with the correct RCU semantics. Test representative systems after patching by exercising process creation/termination and /proc/[pid]/stat monitoring workloads to ensure no regressions. Confirm that all affected hosts have been rebooted or live-patched where supported, and that vulnerability scanners no longer report the affected kernel build.

Typical attack path

  1. Obtain local execution on an affected Linux system as a non-root user or through a compromised application account.
  2. Create process trees where parent and child tasks can be rapidly spawned and terminated.
  3. Concurrently read /proc/[pid]/stat for target processes while racing parent task teardown.
  4. Trigger the unprotected task->real_parent access after the referenced task_struct has been scheduled for RCU-delayed release.
  5. Attempt to shape kernel memory reuse so the use-after-free produces controlled memory corruption rather than only a crash.
  6. Escalate privileges, disclose kernel-sensitive information, or crash the host depending on exploit reliability and system hardening.

How to detect it

Look for evidence of attempted local race-condition exploitation and resulting kernel instability. Useful sources include kernel logs from dmesg, journald, /var/log/kern.log, /var/log/messages, auditd process execution logs, EDR telemetry, container runtime logs, and crash dump systems such as kdump or apport. Search for kernel oops, BUG, general protection fault, KASAN, UBSAN, or panic events occurring during heavy access to /proc/[pid]/stat, especially alongside bursts of short-lived process creation and termination by the same low-privilege user, service account, container, or build job. Investigate repeated reads of /proc/*/stat combined with fork/clone/exec/exit storms, abnormal local privilege changes, unexpected root shells, setuid binary creation, changes to sudoers or authorized_keys, and host crashes without an operational explanation. There are no known public exploit-specific artifacts or named threat actors reported for this vulnerability in the supplied data, so detection should focus on behavioral signs and kernel crash artifacts rather than a fixed exploit signature.

  • do_task_stat
  • task_tgid_nr_ns
  • task_ppid_nr_ns
  • real_parent
  • task_pid_ptr
  • release_task
  • delayed_put_task_struct
  • BUG: KASAN: use-after-free
  • KASAN: use-after-free
  • general protection fault
  • kernel BUG
  • Oops:
  • Kernel panic
  • /proc/*/stat
  • /proc/[pid]/stat

What your security team should do

  • Prioritize patching shared Linux systems where untrusted users, build jobs, containers, or third-party workloads can execute local code.
  • Track distribution-specific advisories and deploy the first available fixed kernel package for all supported affected releases.
  • Ensure systems are rebooted into the patched kernel; kernel package installation alone is insufficient unless a validated live patch is applied.
  • Treat unexplained local privilege escalation, kernel oops events, or crashes involving procfs, task_struct, task_tgid_nr_ns, task_ppid_nr_ns, or do_task_stat as potentially relevant until ruled out.
  • Restrict local access and harden multi-tenant hosts while patching is underway, especially CI runners, bastion hosts, developer servers, and container platforms.
  • Enable and monitor kernel audit, syslog, and crash collection so attempted exploitation or instability can be investigated.
  • Because EPSS is currently low and the issue is not in KEV, use risk-based prioritization, but do not defer patching on systems exposed to untrusted local code.

The record

In the Linux kernel, the following vulnerability has been resolved: procfs: fix missing RCU protection when reading real_parent in do_task_stat() When reading /proc/[pid]/stat, do_task_stat() accesses task->real_parent without proper RCU protection, which leads to: cpu 0 cpu 1 ----- ----- do_task_stat var = task->real_parent release_task call_rcu(delayed_put_task_struct) task_tgid_nr_ns(var) rcu_read_lock <--- Too late to protect task->real_parent! task_pid_ptr <--- UAF! rcu_read_unlock This patch uses task_ppid_nr_ns() instead of task_tgid_nr_ns() to add proper RCU protection for accessing task->real_parent.

Affected packages

Ecosystem Package Introduced Fixed