{"id":"CVE-2026-93201","title":"In the Linux kernel, the following vulnerability has been resolved:\n\ndm-pcache: validate seg_id fields from persistent memory\n\ncache_pos_decode(), cache_key_decode() and the last-kset branches of\ncache_replay(), the writeback worker and …","summary":"In the Linux kernel, the following vulnerability has been resolved:\n\ndm-pcache: validate seg_id fields from persistent memory\n\ncache_pos_decode(), cache_key_decode() and the last-kset branches of\ncache_replay(), the writeback worker and …","severity":"high","cvss":7.8,"cvssVector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","vendor":"Linux","product":"Linux","affected":["Linux >= 1d57628ff95b32d5cfa8d8f50e07690c161e9cf0 < b4bf8af5e7d7db4c5e179e15017da55857761ac4","Linux >= 1d57628ff95b32d5cfa8d8f50e07690c161e9cf0 < 90c990a68460d7b5720e5634cf650eccdf0f4098","Linux 6.18"],"published":"2026-09-17","updated":"2026-09-18","sourceUpdated":"2026-09-18T18:18:24.903","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-93201","references":[{"url":"https://git.kernel.org/stable/c/90c990a68460d7b5720e5634cf650eccdf0f4098","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/b4bf8af5e7d7db4c5e179e15017da55857761ac4","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"}],"tags":["nvd","cve.org"],"epss":0.00112,"epssPercentile":0.01556,"ingestedAt":"2026-09-17T16:21:47.721Z","slug":"CVE-2026-93201","body":"## Overview\n\nIn the Linux kernel, the following vulnerability has been resolved:\n\ndm-pcache: validate seg_id fields from persistent memory\n\ncache_pos_decode(), cache_key_decode() and the last-kset branches of\ncache_replay(), the writeback worker and the GC worker take a cache\nsegment id from the cache device metadata and index cache->segments[]\nwith it without checking it against cache->n_segs. That metadata is only\nCRC-protected with a fixed public seed, so whoever supplies the cache\ndevice on a table load (CAP_SYS_ADMIN) controls the id; an out-of-range\nvalue forms a wild pcache_cache_segment pointer that is dereferenced and\nwritten through -- an out-of-bounds read and write driven by on-disk data.\n\nAdd cache_seg_id_valid() and reject an out-of-range id at each decode\nsite, failing the operation with -EIO instead of indexing past the array.\nBound the id against the initialized-segment count (cache_info.n_segs)\nrather than the physical device total. A forged cache_info.n_segs below\nseg_num otherwise leaves segments[cache_info.n_segs..seg_num) as zeroed\nstructs whose data pointer is NULL, so a forged id in that window would\nstill be dereferenced. A later patch guarantees cache_info.n_segs <=\nseg_num, and a driver-created cache sets the two equal, so valid images\nare unaffected.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"twilight","depthScore":43,"depthScoreParts":{"impact":42.9,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[{"seq":207423,"id":"CVE-2026-93201","ts":1789757346122,"field":"cvss","old":null,"new":"7.8"},{"seq":207422,"id":"CVE-2026-93201","ts":1789757346122,"field":"severity","old":"none","new":"high"}]}