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

bpf: Reject untrusted allocated-object pointers

When the final RCU read-side critical section ends, a local kptr is demoted
to PTR_UNTRUSTED but retains MEM_ALLOC. The pointer may be NULL or may refer
to an object whose lifetime is no longer protected.

type_is_ptr_alloc_obj() nevertheless recognizes any PTR_TO_BTF_ID with
MEM_ALLOC as a live allocated object. In particular, a refcount-only local
kptr never carries NON_OWN_REF, so it still passes the
bpf_refcount_acquire() argument check after RCU protection ends. The kfunc
can then dereference NULL or stale memory.

Make type_is_ptr_alloc_obj() reject PTR_UNTRUSTED pointers. Since
type_is_non_owning_ref() is based on the same predicate, graph kfunc
arguments obey the same live-object requirement. Fault-protected reads of
the demoted pointer remain valid: writes are already rejected, and read
fixups use bpf_may_fault_on_deref() rather than this predicate.

[ kkd: Rewrote commit log ]
Published: 2026-09-25
Score: 7.0 High
EPSS: < 1% Very Low
KEV: No
Impact: Privilege Escalation
Action: Immediate Patch
AI Analysis

Impact

In the Linux kernel’s BPF subsystem, a flaw in the handling of allocated‑object pointers after an RCU read‑side critical section ends allows a kernel pointer that should be treated as untrusted to be considered a live allocated object. Consequently, the function type_is_ptr_alloc_obj() permits the dereference of NULL or stale memory when validated by bpf_refcount_acquire(), leading to kernel memory corruption. An attacker capable of loading a malicious BPF program could exploit this to gain elevated privileges or crash the system. The weakness reflects improper trust of allocated pointers (CWE‑825).

Affected Systems

All Linux kernel releases that contain the unpatched logic are affected, including mainstream distributions that have not yet incorporated the upstream patch. The remedy was introduced by commit 092c2874dc1b2060fa77a465a971acd4fdf87683 and later merged into kernel commits 6b1f786ad85a0b63393b76f5e634deab1a73198c and 7441ee8276641bddaf1cba7bb75ef9c1458ceb3b. Because the advisory does not list specific distribution versions, administrators should verify that their kernel includes the change that rejects untrusted allocated‑object pointers or consult their vendor for a patched release.

Risk and Exploitability

The CVSS score of 7.0 indicates high severity, and the EPSS score of less than 1% suggests a low but nonzero likelihood of exploitation at the time of this analysis. The vulnerability is not listed in the CISA KEV catalog, and no publicly available exploits have been reported. Based on the description, the attack vector is inferred to be local and requires the ability to load a malicious BPF program, which is typically restricted to privileged users. If successfully abused, the flaw could lead to privilege escalation, confidentiality breach, or denial of service.

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

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the kernel to a version that contains the commit 092c2874dc1b2060fa77a465a971acd4fdf87683 or later.
  • If you must continue to run BPF programs, restrict BPF capabilities using seccomp‑bpf, move the relevant network namespaces into a restricted mode, or disable the helper functions that rely on the vulnerable logic.
  • Monitor kernel logs for BPF‑related panics, crashes, or abnormal behavior that could indicate an attempted exploitation and investigate promptly.

Generated by OpenCVE AI on September 30, 2026 at 14:02 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-416
CWE-476

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

Type Values Removed Values Added
Weaknesses CWE-825
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

Moderate


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

Type Values Removed Values Added
Weaknesses CWE-416
CWE-476

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: Reject untrusted allocated-object pointers When the final RCU read-side critical section ends, a local kptr is demoted to PTR_UNTRUSTED but retains MEM_ALLOC. The pointer may be NULL or may refer to an object whose lifetime is no longer protected. type_is_ptr_alloc_obj() nevertheless recognizes any PTR_TO_BTF_ID with MEM_ALLOC as a live allocated object. In particular, a refcount-only local kptr never carries NON_OWN_REF, so it still passes the bpf_refcount_acquire() argument check after RCU protection ends. The kfunc can then dereference NULL or stale memory. Make type_is_ptr_alloc_obj() reject PTR_UNTRUSTED pointers. Since type_is_non_owning_ref() is based on the same predicate, graph kfunc arguments obey the same live-object requirement. Fault-protected reads of the demoted pointer remain valid: writes are already rejected, and read fixups use bpf_may_fault_on_deref() rather than this predicate. [ kkd: Rewrote commit log ]
Title bpf: Reject untrusted allocated-object pointers
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:42.963Z

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

Link: CVE-2026-98037

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

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

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

Link: CVE-2026-98037

cve-icon Redhat

Severity : Moderate

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

Links: CVE-2026-98037 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-30T14:15:16Z

Weaknesses
  • CWE-825

    Expired Pointer Dereference