Cloudanix VulnDB

CVE-2026-99159

None

CVSS

—

EPSS

0.2%

Published

Oct 28, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in how the Linux kernel tracks memory for certain tracing buffers can cause crashes or lost diagnostic data when advanced tracing features are used.

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

What it actually does

Incorrect base calculation in rb_meta_subbuf_idx() for persistent ring buffers causes subbuf_ids[0] to be left NULL and meta->buffers[] indices to be written one sub-buffer too high, leading to NULL dereference in __rb_map_vma() on trace_pipe_raw mmap and subsequent boot-time rejection of prior trace data in rb_cpu_meta_valid().

Why it matters to the business

Tracing features relying on persistent ring buffers become unreliable or crash, potentially disrupting diagnostics, observability pipelines, and post-boot trace retention on affected kernels.

How an attack unfolds

An attacker with sufficient privileges to configure and map a persistent ring buffer triggers the off-by-one index error during setup; subsequent mmap of trace_pipe_raw dereferences the NULL pointer, or a reboot discards prior traces, but no public exploit chains or threat actor usage are known.

How to fix it

Update to a kernel containing the commit that replaces the duplicated index calculation with rb_subbufs_from_meta() and rb_range_buffer() for consistent forward and reverse mapping; rebuild and reboot with the corrected kernel.

How to confirm the fix worked

Confirm the presence of the rb_subbufs_from_meta() helper and that rb_meta_subbuf_idx() now calls it; test persistent ring buffer creation, mmap of trace_pipe_raw, and reboot retention of prior traces.

Typical attack path

  1. Obtain privileges to create and mark a ring buffer as persistent
  2. Invoke rb_setup_ids_meta_page() which populates shifted subbuf_ids[]
  3. Trigger __rb_map_vma() or rb_update_meta_reader() on trace_pipe_raw
  4. Cause NULL dereference or force boot-time trace invalidation

How to detect it

Review kernel logs for NULL pointer dereferences in __rb_map_vma or ring buffer mapping paths; inspect ftrace or tracefs usage around persistent buffer configuration; no specific post-exploitation artifacts are known.

What your security team should do

  • Prioritize kernel upgrade on systems using persistent ring buffers or ftrace
  • Monitor upstream stable and distribution kernel releases for the fix
  • Temporarily avoid persistent mode for ring buffers until patched

The record

In the Linux kernel, the following vulnerability has been resolved: ring-buffer: Fix the sub-buffer array base in rb_meta_subbuf_idx() On a persistent ring buffer, rb_meta_subbuf_idx() can return an index one sub-buffer too high. rb_setup_ids_meta_page() then fills subbuf_ids[] shifted by one and leaves subbuf_ids[0] NULL, which __rb_map_vma() dereferences when userspace maps trace_pipe_raw. rb_update_meta_reader() writes two such indices into meta->buffers[], which rb_cpu_meta_valid() would reject on the next boot, discarding the previous boot's trace. A CPU's sub-buffer array starts after its meta header and the nr_subbufs integers that follow, aligned up to a sub-buffer. rb_meta_subbuf_idx() inverts that calculation but skips only the integers, not the header, so its base is one sub-buffer low whenever the omitted header size crosses the alignment boundary. Invert the calculation with rb_subbufs_from_meta() rather than repeating it. rb_range_buffer() maps an index back to an address through the same helper, so the two directions can no longer disagree.

Affected packages

Ecosystem Package Introduced Fixed