Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-43416

CVE-2026-43416: Linux Kernel Privilege Escalation Flaw

CVE-2026-43416 is a privilege escalation vulnerability in the Linux kernel's PowerPC perf component that causes kernel panic when mm is released. This article covers technical details, affected systems, and mitigations.

Published:

CVE-2026-43416 Overview

CVE-2026-43416 is a NULL pointer dereference vulnerability in the Linux kernel's PowerPC performance monitoring (perf) subsystem. The flaw resides in perf_callchain_user_64, which captures user-space callchains for profiling. When current->mm has already been released, the kernel attempts to read from a freed memory descriptor, triggering an Oops at address 0x00000588. The issue was observed while running a BPF profiling program (profile.py from bcc-tools). The fix adds a NULL check for current->mm, mirroring the earlier x86 fix in commit 20afc60f892d, and moves storage of the top-level stack entry into the generic perf_callchain_user path.

Critical Impact

A local user running perf-based BPF profiling on PowerPC systems can trigger a kernel NULL pointer dereference, resulting in a kernel panic and denial of service.

Affected Products

  • Linux kernel on PowerPC (ppc64) architecture
  • Kernel builds with CONFIG_PERF_EVENTS and BPF profiling support
  • Distributions shipping affected kernel versions prior to the upstream stable patches

Discovery Timeline

  • 2026-05-08 - CVE-2026-43416 published to NVD
  • 2026-05-12 - Last updated in NVD database

Technical Details for CVE-2026-43416

Vulnerability Analysis

The Linux kernel perf subsystem collects user-space callchains so profilers can attribute samples back to source code. On PowerPC, the function perf_callchain_user_64 walks the user stack of the currently running task using current->mm to access the process address space.

When a task is in the process of exiting, its mm_struct may have already been released. If a perf event fires in that narrow window — for example, from a BPF program invoking bpf_get_stackidperf_callchain_user_64 dereferences a freed or NULL mm pointer. The kernel logs a fault at offset 0x588 within the mm_struct layout and panics with BUG: Kernel NULL pointer dereference on read at 0x00000588.

The vulnerability is classified as a NULL pointer dereference leading to denial of service [CWE-476]. The bug is reachable from any context that can attach a BPF profiling program to a perf event, which on many systems requires CAP_PERFMON or CAP_SYS_ADMIN.

Root Cause

The PowerPC implementation of perf_callchain_user_64 did not validate current->mm before dereferencing it. Tasks that have already exited exit_mm() retain a stale or NULL mm pointer while perf callchain sampling is still possible.

Attack Vector

Exploitation requires local access and the ability to run a perf-based profiler or attach a BPF program to a perf event. The reporter triggered the panic using the bcc-tools profile.py script, which attaches a BPF program calling bpf_get_stackid against a perf event source. No code execution or privilege escalation is demonstrated — the impact is a kernel panic and host denial of service.

A call trace from the reported crash:

perf_callchain_user_64+0x2d0/0x490
perf_callchain_user+0x1c/0x30
get_perf_callchain+0x100/0x360
bpf_get_stackid+0x88/0xf0
bpf_prog_..._do_perf_event+0xf8/0x274

Detection Methods for CVE-2026-43416

Indicators of Compromise

  • Kernel log entries containing BUG: Kernel NULL pointer dereference on read at 0x00000588 on PowerPC hosts
  • Oops messages referencing perf_callchain_user_64 in the faulting instruction trace
  • Unexpected kernel panics correlated with execution of bcc-tools, perf record, or BPF profiling agents

Detection Strategies

  • Query running kernel versions across PowerPC fleets and compare against the patched commits 7e5f60b8cfc0, 98074e16742a, and e9bbfb4bfa86.
  • Monitor /var/log/kern.log, dmesg, and journalctl -k for Oops signatures referencing perf callchain functions.
  • Audit which workloads load BPF programs that attach to perf events on ppc64 systems.

Monitoring Recommendations

  • Forward kernel ring buffer events to a centralized logging or SIEM pipeline to correlate panics with profiler activity.
  • Alert on repeated kernel Oops events from the same host, which may indicate ongoing triggering of the bug.
  • Track usage of CAP_PERFMON and CAP_SYS_ADMIN grants to non-administrative service accounts.

How to Mitigate CVE-2026-43416

Immediate Actions Required

  • Apply the upstream Linux stable kernel updates that include the current->mm NULL check in perf_callchain_user_64.
  • Identify PowerPC hosts running profiling or observability stacks (bcc-tools, bpftrace, perf) and prioritize them for patching.
  • Restrict BPF and perf capabilities on production hosts to administrators only.

Patch Information

The fix is committed upstream and backported via the Linux stable tree. Relevant commits: 7e5f60b8cfc0, 98074e16742a, and e9bbfb4bfa86. The patch adds a NULL check for current->mm and moves the top-level stack entry storage into the generic perf_callchain_user path so it is always captured.

Workarounds

  • Disable or avoid running BPF stack-id profiling tools (profile.py, stackcount, similar bcc-tools) on unpatched PowerPC kernels.
  • Lower kernel.perf_event_paranoid permissions and restrict CAP_PERFMON/CAP_SYS_ADMIN to trusted users only.
  • Disable unprivileged BPF by setting kernel.unprivileged_bpf_disabled=1 to reduce the attack surface.
bash
# Restrict perf and BPF access on unpatched PowerPC hosts
sysctl -w kernel.perf_event_paranoid=3
sysctl -w kernel.unprivileged_bpf_disabled=1

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.