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

bpf: reject BPF_PSEUDO_FUNC reference to the main program

fixups.c:jit_subprogs() rewrites BPF_PSEUDO_FUNC loads to contain real
function addresses. This function is invoked from bpf_jit_subprogs()
only when env->subprog_cnt > 1. Meaning that for any program like
below:

int main(void *ctx) {
void *ptr = main;
...
bpf_timer_set_callback(..., ptr);
...
}

The 'ptr' won't be ever converted to contain an address.
In combination with e.g. bpf_timer_set_callback() this would lead to a
function call at a bogus address.

Instead of complicating the implementation, just assume that no useful
program needs main to be a sync or async callback and reject
BPF_PSEUDO_FUNC loads for the main subprogram.
Published: 2026-09-25
Score: 7.0 High
EPSS: < 1% Very Low
KEV: No
Impact: Remote Code Execution
Action: Patch Immediately
AI Analysis

Impact

In the Linux kernel a BPF program can load a reference to the main function that is not rewritten by the JIT compiler. The kernel assumes that only subprograms are used as callbacks, so the address is never replaced when the program contains a main‑to‑BPF reference. Combined with callback registration functions such as bpf_timer_set_callback, this allows the program to invoke an arbitrary, attacker‑supplied address, which results in kernel‑level code execution. The flaw is caused by an unchecked indirect function pointer and threatens confidentiality, integrity, and availability of the entire system.

Affected Systems

Systems running Linux kernel versions not yet patched for the commit that rejects main subprogram BPF_PSEUDO_FUNC references are affected. This includes all mainstream Linux distributions that shipped the vulnerable kernel revision prior to the code fix.

Risk and Exploitability

The CVSS score of 7.0 indicates high severity while the EPSS score of less than 1% suggests low probability of exploitation in the wild. The vulnerability is not listed in the CISA KEV catalog. Attackers can exploit this flaw by loading malicious BPF bytecode from user space, typically via privileged processes or kernel module interfaces. Until the kernel is updated, the risk remains significant, especially for environments that run user‑supplied BPF programs.

Generated by OpenCVE AI on September 30, 2026 at 05:53 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Update the Linux kernel to a release containing the patch that rejects main subprogram BPF_PSEUDO_FUNC loads (commit 118212417ba0120d99f84154799f8880f07411f4).
  • If an immediate upgrade is impossible, avoid loading BPF programs that reference the main function; disable or restrict BPF functionality that allows arbitrary program loading.
  • Audit BPF program loading events with auditd or similar tools to detect suspicious activity and alert administrators.

Generated by OpenCVE AI on September 30, 2026 at 05:53 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 DLA Debian DLA DLA-4841-1 linux security update
Debian DSA Debian DSA DSA-6528-1 linux security update
Ubuntu USN Ubuntu USN USN-8961-1 Linux kernel vulnerabilities
History

Sat, 03 Oct 2026 11:15:00 +0000


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

Type Values Removed Values Added
Weaknesses CWE-824
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 16:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-704

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 BPF_PSEUDO_FUNC reference to the main program fixups.c:jit_subprogs() rewrites BPF_PSEUDO_FUNC loads to contain real function addresses. This function is invoked from bpf_jit_subprogs() only when env->subprog_cnt > 1. Meaning that for any program like below: int main(void *ctx) { void *ptr = main; ... bpf_timer_set_callback(..., ptr); ... } The 'ptr' won't be ever converted to contain an address. In combination with e.g. bpf_timer_set_callback() this would lead to a function call at a bogus address. Instead of complicating the implementation, just assume that no useful program needs main to be a sync or async callback and reject BPF_PSEUDO_FUNC loads for the main subprogram.
Title bpf: reject BPF_PSEUDO_FUNC reference to the main program
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:13:24.903Z

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

Link: CVE-2026-98075

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Undergoing Analysis

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

Modified: 2026-10-19T10:18:03.130

Link: CVE-2026-98075

cve-icon Redhat

Severity : Moderate

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

Links: CVE-2026-98075 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-30T06:00:12Z

Weaknesses
  • CWE-704

    Incorrect Type Conversion or Cast

  • CWE-824

    Access of Uninitialized Pointer