CVE-2026-93201
High · 7.8CVSS
7.8
EPSS
0.2%
Published
Sep 17, 2026
CISA due date
—
Cloudanix analysis
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
- Obtain CAP_SYS_ADMIN on the target host
- Construct dm-pcache table load with forged cache_info containing seg_id >= n_segs
- Mount or activate the malicious cache device
- 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 |
|---|