Cloudanix VulnDB

CVE-2025-38586

None

CVSS

—

EPSS

0.2%

Published

Aug 19, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in the operating system on certain ARM-based computers can make the whole system crash when particular low-level programs run.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Moderate
Impact
Denial Of Service
Component
OS kernel
Class
Memory Corruption
Remediation
Patch
Effort
Low
Patch risk
Low

What it actually does

In the ARM64 BPF JIT, exception_boundary programs skip the find_used_callee_regs() call that sets ctx->fp_used, leaving the frame pointer uninitialized in the prologue even when the program uses FP; execution then dereferences an invalid stack pointer and triggers a kernel page fault.

Why it matters to the business

ARM64 Linux systems can suffer abrupt kernel crashes and reboots when specific BPF programs are loaded, causing unplanned downtime, service interruption, and potential loss of in-flight work.

How an attack unfolds

An attacker with the ability to load or attach BPF programs supplies a program that both declares itself an exception boundary and references the frame pointer; the JIT emits a prologue that never saves or sets up FP, so the first FP-using instruction faults and crashes the kernel.

How to fix it

Upgrade the Linux kernel to commit 0dbef493cae7d451f740558665893c000adb2321 or later; for Chainguard packages update openjdk-11-openj9 and related variants to 0.53.0-r0 or newer.

How to confirm the fix worked

Confirm the running kernel contains commit 0dbef493cae7d451f740558665893c000adb2321; verify package versions match the listed fixed releases; test by loading an exception_boundary BPF program that uses FP and ensure no page fault occurs.

Typical attack path

  1. Obtain privileges sufficient to load or attach BPF programs on an ARM64 system
  2. Craft or obtain a BPF program marked as exception_boundary that also uses the frame pointer
  3. Load the program via bpf() or a loader that sets aux->exception_boundary
  4. Trigger execution of the program to reach the faulty prologue and induce the page fault

How to detect it

Search kernel logs and dmesg for page-fault oopses originating in the BPF JIT prologue or arm64 exception-boundary paths; correlate timestamps with recent bpf() syscalls or BPF program loads.

What your security team should do

  • Apply the kernel or package updates on all ARM64 systems as soon as possible
  • Restrict untrusted users and containers from loading BPF programs (CAP_BPF, unprivileged_bpf_disabled)
  • Monitor kernel crash logs for BPF-related page faults on ARM64

The record

In the Linux kernel, the following vulnerability has been resolved: bpf, arm64: Fix fp initialization for exception boundary In the ARM64 BPF JIT when prog->aux->exception_boundary is set for a BPF program, find_used_callee_regs() is not called because for a program acting as exception boundary, all callee saved registers are saved. find_used_callee_regs() sets `ctx->fp_used = true;` when it sees FP being used in any of the instructions. For programs acting as exception boundary, ctx->fp_used remains false even if frame pointer is used by the program and therefore, FP is not set-up for such programs in the prologue. This can cause the kernel to crash due to a pagefault. Fix it by setting ctx->fp_used = true for exception boundary programs as fp is always saved in such programs.

Affected packages

Ecosystem Package Introduced Fixed
Debian:13 linux 0 No fix
Debian:14 linux 0 No fix
Debian:14 linux 0 6.16.3-1
Linux Kernel 6.12.0 6.12.42
openSUSE:Leap 16.0 dtb-aarch64 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-64kb 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-default-base 0 6.12.0-160000.6.1.160000.2.4
openSUSE:Leap 16.0 kernel-docs 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-kvmsmall 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-build 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-obs-qa 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-rt 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-source 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-syms 0 6.12.0-160000.6.1
openSUSE:Leap 16.0 kernel-zfcpdump 0 6.12.0-160000.6.1

Related vulnerabilities