Cloudanix VulnDB

CVE-2026-93201

High · 7.8

CVSS

7.8

EPSS

0.2%

Published

Sep 17, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

An administrative user can feed bad storage cache data into the Linux kernel and cause memory errors that may let them gain full system control.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Full Compromise
Component
OS kernel
Class
Memory Corruption
Remediation
Patch
Effort
Medium
Patch risk
Low

What it actually does

Invalid seg_id from on-disk cache metadata bypasses bounds check against n_segs, producing a wild pointer into cache->segments[] that is dereferenced and written through, resulting in out-of-bounds kernel read/write.

Why it matters to the business

Systems relying on dm-pcache for persistent storage caching face kernel memory corruption risk when an administrator loads a malicious cache device, potentially enabling local privilege escalation or denial of service.

How an attack unfolds

An attacker with CAP_SYS_ADMIN supplies a crafted cache device whose metadata contains an out-of-range segment ID protected only by a fixed-seed CRC. Cache operations such as cache_pos_decode, cache_key_decode, replay, writeback or GC then index past the array, dereferencing attacker-controlled memory.

How to fix it

Upgrade the Linux kernel to a version containing the cache_seg_id_valid() checks that reject out-of-range IDs with -EIO and correctly bound against cache_info.n_segs.

How to confirm the fix worked

Confirm presence of cache_seg_id_valid() calls at all decode sites in the dm-pcache source; attempt table load with an out-of-range seg_id and verify the operation fails cleanly with -EIO rather than oops or corruption.

Typical attack path

  1. Obtain CAP_SYS_ADMIN on the target host
  2. Construct dm-pcache table load with forged cache_info containing seg_id >= n_segs
  3. Mount or activate the malicious cache device
  4. Trigger decode or worker paths that dereference the invalid segment pointer

How to detect it

Review kernel logs for dm-pcache -EIO failures or unexpected segment ID errors during table load or worker activity; inspect active dm-table output for cache devices with suspicious metadata.

What your security team should do

  • Apply the validating kernel patch at the earliest maintenance window
  • Limit CAP_SYS_ADMIN to trusted administrative accounts only
  • Audit device-mapper table loads for dm-pcache usage

The record

In the Linux kernel, the following vulnerability has been resolved: dm-pcache: validate seg_id fields from persistent memory cache_pos_decode(), cache_key_decode() and the last-kset branches of cache_replay(), the writeback worker and the GC worker take a cache segment id from the cache device metadata and index cache->segments[] with it without checking it against cache->n_segs. That metadata is only CRC-protected with a fixed public seed, so whoever supplies the cache device on a table load (CAP_SYS_ADMIN) controls the id; an out-of-range value forms a wild pcache_cache_segment pointer that is dereferenced and written through -- an out-of-bounds read and write driven by on-disk data. Add cache_seg_id_valid() and reject an out-of-range id at each decode site, failing the operation with -EIO instead of indexing past the array. Bound the id against the initialized-segment count (cache_info.n_segs) rather than the physical device total. A forged cache_info.n_segs below seg_num otherwise leaves segments[cache_info.n_segs..seg_num) as zeroed structs whose data pointer is NULL, so a forged id in that window would still be dereferenced. A later patch guarantees cache_info.n_segs <= seg_num, and a driver-created cache sets the two equal, so valid images are unaffected.

Affected packages

Ecosystem Package Introduced Fixed