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

bpf: Require MEM_PERCPU for percpu kptr stores

map_kptr_match_type() treats perm_flags as the set of register type flags
that a kptr field permits. Adding MEM_PERCPU to that set for
BPF_KPTR_PERCPU does not require the source register to carry it, however.
The subset test consequently accepts both a plain bpf_obj_new() allocation
and a referenced kernel pointer into a __percpu_kptr map field.

Loads from the field are always marked MEM_PERCPU. Consumers then treat the
stored value as the cookie returned by bpf_percpu_obj_new(): per-CPU pointer
helpers relocate it, and map teardown selects the per-CPU free path. A plain
allocation can therefore provide an arbitrary kernel read/write, while a
kernel pointer can be relocated into an invalid address or sent through a
missing destructor.

Require the source MEM_PERCPU flag to match the destination field kind.
This preserves valid bpf_percpu_obj_new() stores and rejects both the
program-BTF and kernel-BTF variants.
Published: 2026-09-25
Score: 7.0 High
EPSS: < 1% Very Low
KEV: No
Impact: kernel read/write privilege escalation
Action: Apply Patch
AI Analysis

Impact

The Linux kernel flaw occurs in the map_kptr_match_type function where the MEM_PERCPU flag is not required on the source register when storing into a percpu-kptr map. This omission allows a BPF program to place a standard kernel pointer into a percpu-kptr field, causing the kernel to treat it as a per-CPU object. The result is uncontrolled kernel memory read or write operations, giving an attacker the ability to alter kernel data or execute code with elevated privileges. The weakness is a type safety bug, classified as CWE-843.

Affected Systems

Linux kernel builds that support BPF and percpu-kptr maps are affected. No specific version range is listed in the advisory, so it is inferred that all kernel releases prior to the applied fix may be vulnerable until the patch is installed. The impact applies to any distribution using the affected kernel, regardless of the vendor.

Risk and Exploitability

The CVSS score is 7.0, indicating a high severity. The EPSS score is below 1%, implying a very low but non‑zero exploitation likelihood. The vulnerability is not listed in the CISA KEV catalog. Based on the description, it is inferred that the most probable attack vector is local, requiring the ability to load BPF programs with sufficient privileges. Once a BPF program stores a plain allocation pointer into the percpu-kptr map, the kernel’s subsequent handling can be leveraged to perform arbitrary memory operations.

Generated by OpenCVE AI on September 30, 2026 at 14:27 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply the kernel patch that enforces the MEM_PERCPU flag for percpu kptr stores (see the commit references in the advisory).
  • Reboot the system after updating the kernel to ensure the new patch is active.
  • Restrict BPF program loading to privileged users or to specific BPF program types that have the necessary permissions; enforce this using Linux security modules such as SELinux or AppArmor.

Generated by OpenCVE AI on September 30, 2026 at 14:27 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4817-1 linux-6.12 security update
Debian DSA Debian DSA DSA-6528-1 linux security update
History

Tue, 29 Sep 2026 22:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-20

Tue, 29 Sep 2026 13:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-843
References
Metrics threat_severity

None

cvssV3_1

{'score': 7.0, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H'}

threat_severity

Important


Fri, 25 Sep 2026 16:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-20

Fri, 25 Sep 2026 10:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: bpf: Require MEM_PERCPU for percpu kptr stores map_kptr_match_type() treats perm_flags as the set of register type flags that a kptr field permits. Adding MEM_PERCPU to that set for BPF_KPTR_PERCPU does not require the source register to carry it, however. The subset test consequently accepts both a plain bpf_obj_new() allocation and a referenced kernel pointer into a __percpu_kptr map field. Loads from the field are always marked MEM_PERCPU. Consumers then treat the stored value as the cookie returned by bpf_percpu_obj_new(): per-CPU pointer helpers relocate it, and map teardown selects the per-CPU free path. A plain allocation can therefore provide an arbitrary kernel read/write, while a kernel pointer can be relocated into an invalid address or sent through a missing destructor. Require the source MEM_PERCPU flag to match the destination field kind. This preserves valid bpf_percpu_obj_new() stores and rejects both the program-BTF and kernel-BTF variants.
Title bpf: Require MEM_PERCPU for percpu kptr stores
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-10-19T09:12:44.994Z

Reserved: 2026-09-25T10:19:56.071Z

Link: CVE-2026-98039

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-25T11:17:32.663

Modified: 2026-10-19T10:17:57.823

Link: CVE-2026-98039

cve-icon Redhat

Severity : Important

Publid Date: 2026-09-25T00:00:00Z

Links: CVE-2026-98039 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-30T14:30:18Z

Weaknesses
  • CWE-843

    Access of Resource Using Incompatible Type ('Type Confusion')