CVE-2026-23383

bpf, arm64: Force 8-byte alignment for JIT buffer to prevent atomic tearing

State
Published
Severity
7.8 High
Published
Mar 25, 2026
Updated
Oct 30, 2026
Reserved
Jan 13, 2026

Read the record on cve.org

Description

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

bpf, arm64: Force 8-byte alignment for JIT buffer to prevent atomic tearing

struct bpf_plt contains a u64 target field. Currently, the BPF JIT allocator requests an alignment of 4 bytes (sizeof(u32)) for the JIT buffer.

Because the base address of the JIT buffer can be 4-byte aligned (e.g., ending in 0x4 or 0xc), the relative padding logic in build_plt() fails to ensure that target lands on an 8-byte boundary.

This leads to two issues: 1. UBSAN reports misaligned-access warnings when dereferencing the structure. 2. More critically, target is updated concurrently via WRITE_ONCE() in bpf_arch_text_poke() while the JIT'd code executes ldr. On arm64, 64-bit loads/stores are only guaranteed to be single-copy atomic if they are 64-bit aligned. A misaligned target risks a torn read, causing the JIT to jump to a corrupted address.

Fix this by increasing the allocation alignment requirement to 8 bytes (sizeof(u64)) in bpf_jit_binary_pack_alloc(). This anchors the base of the JIT buffer to an 8-byte boundary, allowing the relative padding math in build_plt() to correctly align the target field.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • b2ad54e1533e91449cb2a371e034942bd7882b58 to before fcb9c6275f712860c22c96a472b73d05cabb75cdAffected
  • b2ad54e1533e91449cb2a371e034942bd7882b58 to before f5a41b61b5faae1965a5a2cb55322fe8f17e3b2dAffected
  • b2ad54e1533e91449cb2a371e034942bd7882b58 to before 80ad264da02cc4aee718e799c2b79f0f834673dcAffected
  • b2ad54e1533e91449cb2a371e034942bd7882b58 to before 519b1ad91de5bf7a496f2b858e9212db6328e1deAffected
  • b2ad54e1533e91449cb2a371e034942bd7882b58 to before 66959ed481a474eaae278c7f6860a2a9b188a4d6Affected
  • b2ad54e1533e91449cb2a371e034942bd7882b58 to before ef06fd16d48704eac868441d98d4ef083d8f3d07Affected
LinuxLinux
  • 6.0Affected
  • before 6.0Not affected
  • 6.1.191 through 6.1.*Not affected
  • 6.6.160 through 6.6.*Not affected
  • 6.12.77 through 6.12.*Not affected
  • 6.18.17 through 6.18.*Not affected
  • 6.19.7 through 6.19.*Not affected
  • 7.0 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.