Cloudanix VulnDB

CVE-2026-64508

None

CVSS

—

EPSS

0.2%

Published

Jul 25, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A Linux kernel weakness could help a local attacker turn low-level program-loading features into part of a deeper system compromise, so affected systems should be updated or configured to restrict that feature.

Chainable
Exploitation
Local Privilege
Attacker needs
Local User
Complexity
High
Impact
Privilege Gain
Component
OS kernel
Class
Other
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

This flaw affects Linux kernel BPF JIT memory reuse. The BPF JIT allocator can place many small BPF programs into larger executable memory regions and later reuse freed space for newly loaded programs. Without flushing indirect branch predictors before reuse, CPU branch prediction state left by an older program may influence indirect jumps into the newly written program. In practical terms, this is a kernel hardening weakness around BPF JIT spraying and branch-prediction behavior; exploitation would likely require local ability to load or influence BPF/cBPF programs and a carefully crafted sequence of program allocation, freeing, and reuse. The issue is not described as a direct remote code execution flaw, and public exploit maturity is currently listed as none.

Why it matters to the business

The primary risk is increased exposure on Linux systems where untrusted or low-privileged users can exercise BPF-related functionality. Successful exploitation could contribute to kernel-level attack chains, including privilege escalation or bypass of hardening assumptions, which may lead to full system compromise. The current EPSS score is low, the issue is not in CISA KEV, and no ransomware use is indicated, so this should be treated as a kernel hardening update rather than an emergency internet-wide exploitation event. Systems that permit unprivileged BPF use or run multi-tenant workloads should prioritize remediation more highly.

How an attack unfolds

An attacker would first need local execution or another path that allows them to repeatedly create and remove BPF or cBPF programs. They would attempt to shape the BPF JIT allocator so that executable memory previously occupied by one program is reused by another attacker-controlled program. By training or poisoning indirect branch prediction state with the old program and then causing execution of the newly placed program, the attacker may try to influence speculative control flow as part of a JIT-spraying or kernel exploitation technique. This would likely be one component of a larger exploit chain rather than a standalone compromise path. The upstream fix adds architecture-specific branch predictor flushing when JIT memory is reused, preventing stale prediction state from being carried across program lifetimes.

How to fix it

Apply a Linux kernel update from the relevant distribution or appliance vendor that includes the BPF JIT predictor-flush hardening fix. Because no exact affected product list or fixed package versions were provided, use vendor advisories and kernel changelogs to identify the first fixed kernel for each platform. Where immediate patching is not possible, reduce exposure by disabling unprivileged BPF where supported, for example setting kernel.unprivileged_bpf_disabled=1 or the vendor-recommended equivalent. Consider disabling the BPF JIT on systems that do not require it using net.core.bpf_jit_enable=0, after testing for performance or observability impact. Restrict capabilities and container privileges that allow BPF use, including CAP_BPF, CAP_SYS_ADMIN, CAP_NET_ADMIN, and privileged container execution. Keep kernel lockdown, LSM policies, seccomp profiles, and container runtime restrictions enabled where applicable.

How to confirm the fix worked

Confirm that each Linux system is running a vendor kernel build that contains the fix or a documented backport. Do not rely only on the upstream version string, because many distributions backport security fixes without changing to the latest upstream kernel. Validate current exposure by checking BPF-related sysctls such as kernel.unprivileged_bpf_disabled, net.core.bpf_jit_enable, and net.core.bpf_jit_harden. Confirm that untrusted users and containers cannot load BPF programs unless explicitly required. If auditd, eBPF telemetry, or EDR coverage is available, verify that BPF program-load activity is logged and alertable. On test systems, ensure expected BPF-dependent tooling still works after patching or mitigation changes.

Typical attack path

  1. Gain local code execution on a Linux host or workload with access to BPF/cBPF functionality.
  2. Determine whether unprivileged BPF or another reachable BPF-loading path is available.
  3. Repeatedly load and unload small BPF/cBPF programs to influence BPF JIT allocator reuse.
  4. Attempt to train indirect branch prediction state using a program that previously occupied a JIT memory slot.
  5. Load a new crafted BPF program into the reused executable allocation.
  6. Trigger indirect jumps into the new program and attempt to use stale branch prediction state as part of a JIT-spraying or speculative execution attack chain.
  7. Combine the primitive with additional kernel exploitation techniques to attempt privilege escalation or hardening bypass.

How to detect it

There is no single reliable log entry or file artifact that proves exploitation of this issue. Detection should focus on suspicious prerequisites and behavior: local users or containers unexpectedly loading BPF programs, repeated BPF program load/unload cycles, use of privileged containers or unusual capabilities, and BPF activity from accounts or processes that do not normally perform observability, networking, sandboxing, or security functions. Useful sources include Linux audit logs for the bpf syscall, EDR telemetry, container runtime logs, Kubernetes audit logs, kernel logs, shell history, and security agent telemetry. Look for bursts of BPF_PROG_LOAD activity, use of SO_ATTACH_FILTER or classic BPF socket filters by unusual processes, recent privilege escalation symptoms following BPF activity, and unexpected changes to BPF-related sysctls. Absence of these events does not rule out exploitation, especially if BPF auditing was not enabled before the incident.

What your security team should do

  • Inventory Linux systems, container hosts, Kubernetes nodes, and appliances that expose BPF functionality or allow local multi-user workloads.
  • Prioritize patching for multi-tenant Linux hosts, developer workstations, container platforms, bastion systems, and systems where unprivileged users can run code.
  • Apply vendor kernel updates that include the BPF JIT memory-reuse predictor-flush hardening fix.
  • Temporarily disable unprivileged BPF and consider disabling BPF JIT where operationally feasible until patched.
  • Review container and workload policies to remove unnecessary privileged mode and BPF-related capabilities.
  • Enable or tune audit coverage for BPF program loading and suspicious repeated BPF load/unload activity.
  • Monitor vendor advisories for exact fixed package versions and any later change in exploit maturity, EPSS trend, or KEV status.

The record

In the Linux kernel, the following vulnerability has been resolved: bpf: Support for hardening against JIT spraying The BPF JIT allocator packs many small programs into larger executable allocations and reuses space within those allocations as programs are loaded and freed. When fresh code is written into space that a previous program occupied, an indirect jump into the new program can reuse a branch prediction left behind by the old one. Flush the indirect branch predictors before reusing JIT memory so that indirect jumps into a newly written program don't reuse predictions from an old program that occupied the same space. Introduce bpf_arch_pred_flush_enabled static key and bpf_arch_pred_flush static call for flushing the branch predictors on JIT memory reuse. Architectures that need a flush, can update it to a predictor flush function. By default, its a NOP and does not emit any CALL. Allocations larger than a pack are not covered by this flush. That is safe because cBPF programs (the unprivileged attack surface) are bounded well below a pack size. Issue a warning if this assumption is ever violated while the flush is active.

Affected packages

Ecosystem Package Introduced Fixed