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

perf tools: Use perf_env__get_cpu_topology() in machine__resolve()

machine__resolve() accesses env->cpu[al->cpu].socket_id after checking
al->cpu >= 0 and env->cpu != NULL, but without validating al->cpu
against env->nr_cpus_avail. Since al->cpu comes from the untrusted
perf.data sample, a crafted file with a large CPU index causes an
out-of-bounds heap read.

Use perf_env__get_cpu_topology() which validates both NULL and bounds.
Also bounds-check al->cpu before the cast to struct perf_cpu (int16_t):
without this, values like 65536 silently truncate to 0, bypassing the
accessor's internal check and returning CPU 0's topology.
Published: 2026-08-28
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability arises in the Linux kernel's perf tool subsystem where the machine__resolve() function reads the socket_id field of a CPU entry using an index derived directly from untrusted perf.data sample files. The code performs only a basic non‑negative and NULL pointer check but does not validate that the index is less than the number of CPUs available. Because an attacker can supply a perf.data file with a very large CPU index, the kernel will read beyond the bounds of the allocated env->cpu array. This results in an out‑of‑bounds heap read that can expose hidden kernel memory to the attacker, potentially leading to information disclosure or privilege escalation if the leaked data is leveraged in subsequent attacks.

Affected Systems

Linux kernel users running versions that pre‑date the merge of commits 5484b43, b9e8406, and eb266a1 are impacted. The exact kernel release numbers are not listed in the advisory, so any installation of the kernel prior to the inclusion of the bounds‑checking fix should be considered vulnerable. The issue affects the perf subsystem that is typically enabled by default on most distributions.

Risk and Exploitability

The vulnerability requires local execution of the perf utility against a crafted perf.data file. Since the attack vector is tied to a user‑supplied file, it is not remotely exploitable from external networks unless privileged mechanisms are compromised. No EPSS score is available, and the vulnerability has not entered CISA’s KEV catalog. Nevertheless, the potential to read arbitrary kernel memory represents a high impact local threat, especially in environments where untrusted users can invoke perf or where the kernel is exposed to untrusted data sources.

Generated by OpenCVE AI on August 28, 2026 at 09:55 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the kernel patch that replaces machine__resolve() with a bounds‑checked version using perf_env__get_cpu_topology().
  • Upgrade to a Linux kernel version that includes the fix, or apply the changes manually from the referenced commits.
  • Restrict access to the perf tool and to the creation or processing of perf.data files so that only trusted users can invoke perf with potentially untrusted data.
  • As an interim measure, manually add a bounds check for al->cpu against env->nr_cpus_avail before dereferencing env->cpu or wrap the access with perf_env__get_cpu_topology().

Generated by OpenCVE AI on August 28, 2026 at 09:55 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 28 Aug 2026 10:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-125
CWE-200

Fri, 28 Aug 2026 07:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: perf tools: Use perf_env__get_cpu_topology() in machine__resolve() machine__resolve() accesses env->cpu[al->cpu].socket_id after checking al->cpu >= 0 and env->cpu != NULL, but without validating al->cpu against env->nr_cpus_avail. Since al->cpu comes from the untrusted perf.data sample, a crafted file with a large CPU index causes an out-of-bounds heap read. Use perf_env__get_cpu_topology() which validates both NULL and bounds. Also bounds-check al->cpu before the cast to struct perf_cpu (int16_t): without this, values like 65536 silently truncate to 0, bypassing the accessor's internal check and returning CPU 0's topology.
Title perf tools: Use perf_env__get_cpu_topology() in machine__resolve()
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-28T06:49:11.120Z

Reserved: 2026-08-26T14:34:25.782Z

Link: CVE-2026-80670

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-28T08:16:52.317

Modified: 2026-08-28T08:16:52.317

Link: CVE-2026-80670

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-28T10:00:06Z

Weaknesses
  • CWE-125

    Out-of-bounds Read

  • CWE-200

    Exposure of Sensitive Information to an Unauthorized Actor