ZeroHour

CVE-2026-80671

mass

Memory-safety flaws in Linux kernel perf tool when parsing untrusted perf.data

CVSS 3.1
9.3 critical
EPSS
<1%p5
Published
()
Modified
AI analysis

CVE-2026-80671 fixes several memory-safety and robustness bugs in the register_pid() function of the Linux kernel's 'perf sched' tool, which parses perf.data files. When perf sched processes an untrusted perf.data file, an integer overflow in (pid + 1) * sizeof(struct task_desc *) can wrap to a tiny allocation on 32-bit systems and cause out-of-bounds writes, and an unchecked strcpy() can overflow a fixed 20-byte comm buffer with an attacker-controlled string; allocation failures also trigger a BUG_ON crash and pointer/state corruption. An attacker who induces a user (or automated tooling) to analyze a crafted perf.data file gains a crash of the perf process, and the heap overflow could potentially lead to code execution in that process's context. Anyone running the perf tool's sched subcommand on perf.data files from untrusted sources is affected; the attack vector is local (AV:L), so remote-only hosts that never process foreign perf.data are not practically exposed. No public proof-of-concept, KEV listing, or known exploitation exists, and EPSS puts 30-day exploitation probability at only about 0.2%.

What to do: Update the perf tool (via your distribution's linux-tools/kernel-tools or equivalent package) to a build containing the upstream register_pid() fix, since fixes are delivered through kernel tooling updates rather than a runtime component. As an interim mitigation, avoid running 'perf sched' or other perf parsing on perf.data files received from untrusted sources, and treat 32-bit perf builds with heightened caution. Check whether your monitoring or profiling pipelines automatically ingest third-party perf.data files.

Affected
Linux kernel (perf userspace tool) perf tool, 'perf sched' command (register_pid())
Estimated exposure
massTens of millions of Linux installations ship the perf tool via distro kernel-tools/linux-tools packages, though practical exposure is limited to hosts and… — perf is bundled in standard linux-tools/kernel-tools packages on all major distributions, so installed-base size tracks the large Linux server/workstation fleet, but the flaw is only reachable when untrusted perf.data is analyzed, which is…

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: perf sched: Fix register_pid() overflow, strcpy, and BUG_ON register_pid() has several issues when processing untrusted perf.data: 1. Integer overflow: (pid + 1) * sizeof(struct task_desc *) can wrap to a small value on 32-bit systems when pid is large (e.g. 0x40000000), causing realloc to return a tiny buffer followed by out-of-bounds writes in the initialization loop. 2. Heap buffer overflow: strcpy(task->comm, comm) copies the untrusted comm string into a fixed 20-byte COMM_LEN buffer with no length check. 3. BUG_ON on allocation failure: perf.data is untrusted input, so allocation failures should be handled gracefully rather than killing the process. 4. Realloc of sched->tasks assigned directly back, leaking the old pointer on failure; nr_tasks incremented before the realloc, leaving corrupted state on failure. Cap pid at PID_MAX_LIMIT (4194304, matching the kernel's maximum on 64-bit), replace strcpy with strlcpy, guard against NULL comm, replace BUG_ON with NULL returns using safe realloc patterns, and add NULL checks in callers that dereference the result.

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

In the news

No ingested article mentions this CVE yet.