Cloudanix VulnDB

CVE-2026-99136

None

CVSS

—

EPSS

0.2%

Published

Oct 28, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A small timing error in Linux disk encryption code can cause some failed disk operations to be reported as successful, which might let data problems go unnoticed.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
High
Impact
Data Tampering
Component
OS kernel
Class
Race Condition
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Race condition allows crypt_dec_pending to read a stale io->error value before the final reference drop, causing a failed encrypted I/O to be completed with success status instead of propagating the error.

Why it matters to the business

Encrypted block storage may silently discard write failures or return incorrect read results, risking data corruption, inconsistent file systems, or undetected loss of critical information on systems using dm-crypt.

How an attack unfolds

An attacker triggers concurrent I/O completion paths (for example via interrupt-driven endio) that set an error and release a reference between the error read and the atomic decrement in crypt_dec_pending, so the final bio completion reports success for a failed operation.

How to fix it

Upgrade the Linux kernel to a version containing the fix that moves the io->error read after atomic_dec_and_test; rebuild and reboot all affected systems; verify dm-crypt functionality after update.

How to confirm the fix worked

Confirm the corrected read-after-decrement logic is present in crypt_dec_pending; run concurrent error-injection tests on dm-crypt devices and verify error status is now correctly propagated.

Typical attack path

  1. Mount or access a dm-crypt encrypted device under load
  2. Induce I/O errors on the underlying storage while multiple contexts race on the same dm_crypt_io
  3. Force the window between io->error read and atomic_dec_and_test
  4. Observe successful completion status returned for the failed bio

How to detect it

Review kernel logs and dm-crypt trace points around I/O completion for unexpected success status on operations known to have encountered underlying errors; no persistent artifacts remain after the race window closes.

What your security team should do

  • Prioritize kernel update on all systems using dm-crypt within the next maintenance window
  • Monitor upstream stable and distribution kernel changelogs for the referenced commit
  • Test dm-crypt error paths in staging environments before broad rollout

The record

In the Linux kernel, the following vulnerability has been resolved: dm-crypt: fix a tiny race condition in crypt_dec_pending crypt_dec_pending reads io->error before calling atomic_dec_and_test. Another context, for example crypt_endio called from an interrupt, may set io->error and drop its reference between the read and the decrement. crypt_dec_pending then drops the last reference and completes the bio with the stale status - so a read that failed and was never decrypted, or a write that failed, is reported as successful. The read was placed before the decrement by commit b35f8caa0890 ("dm crypt: wait for endio to complete before destruction"), because that commit freed dm_crypt_io before calling bio_endio. This is no longer the case, dm_crypt_io lives in the per-bio data now. Read io->error after atomic_dec_and_test instead. atomic_dec_and_test is fully ordered, so no additional barrier is needed.

Affected packages

Ecosystem Package Introduced Fixed