{"id":"CVE-2026-99136","kind":"vulnerability","aliases":["CVE-2026-99136"],"related":[],"title":"Linux kernel dm-crypt: race can report failed I/O as successful","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ndm-crypt: fix a tiny race condition in crypt_dec_pending\n\ncrypt_dec_pending reads io->error before calling atomic_dec_and_test.\nAnother context, for example crypt_endio called from an interrupt, may\nset io->error and drop its reference between the read and the\ndecrement. crypt_dec_pending then drops the last reference and completes\nthe bio with the stale status - so a read that failed and was never\ndecrypted, or a write that failed, is reported as successful.\n\nThe read was placed before the decrement by commit b35f8caa0890 (\"dm\ncrypt: wait for endio to complete before destruction\"), because that\ncommit freed dm_crypt_io before calling bio_endio. This is no longer the\ncase, dm_crypt_io lives in the per-bio data now.\n\nRead io->error after atomic_dec_and_test instead. atomic_dec_and_test is\nfully ordered, so no additional barrier is needed.","summary":"In the Linux kernel's dm-crypt disk encryption layer, a race in crypt_dec_pending can read a stale error status before the final reference drop, so a failed read or write gets completed as successful. The impact is data-integrity: an application may treat failed or undecrypted data as valid, and the sources describe no code execution.","severity":"low","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["dm-crypt","linux-kernel","luks","runtime","self-hosted"],"not_affected_if":["no-dm-crypt"],"how_to_check":"- Check the running kernel with `uname -r` and whether dm-crypt is in use with `dmsetup table` or `lsblk -o NAME,TYPE` showing `crypt` devices.\n- Compare the kernel version against the fixed stable release listed in the NVD entry (unknown from the sources).","fix":"- Update to a Linux kernel release that includes the upstream commit fixing crypt_dec_pending (version unknown from the sources).\n- Use your distribution's kernel update for the stable branch you run.","status":"open","published_at":"2026-10-28T11:17:33+00:00","first_seen_at":"2026-10-28T11:32:35+00:00","triaged_at":"2026-10-28T11:36:11+00:00","updated_at":"2026-10-28T11:36:11+00:00","category":"runtime","confidence":0.6,"triage":{"at":"2026-10-28T11:36:11Z","model":"claude-haiku-5-5","output":{"fix":"- Update to a Linux kernel release that includes the upstream commit fixing crypt_dec_pending (version unknown from the sources).\n- Use your distribution's kernel update for the stable branch you run.","reach":"local","title":"Linux kernel dm-crypt: race can report failed I/O as successful","impact":"low","summary":"In the Linux kernel's dm-crypt disk encryption layer, a race in crypt_dec_pending can read a stale error status before the final reference drop, so a failed read or write gets completed as successful. The impact is data-integrity: an application may treat failed or undecrypted data as valid, and the sources describe no code execution.","category":"runtime","nicknames":[],"who_cares":["linux-kernel","dm-crypt","self-hosted","luks"],"confidence":0.6,"needs_auth":"unknown","worst_case":"failed disk I/O is reported as successful, risking silent data corruption","analyst_note":"Find the fixed kernel versions and the upstream commit for the crypt_dec_pending change from the kernel stable git log or the NVD entry linked in the sources.","how_to_check":"- Check the running kernel with `uname -r` and whether dm-crypt is in use with `dmsetup table` or `lsblk -o NAME,TYPE` showing `crypt` devices.\n- Compare the kernel version against the fixed stable release listed in the NVD entry (unknown from the sources).","needs_analyst":true,"not_affected_if":["no-dm-crypt"],"who_is_affected":"Systems running the Linux kernel with the device-mapper dm-crypt target active, such as LUKS-encrypted volumes. Hosts without dm-crypt devices are not exposed to this path. The sources do not give a fixed version or a configuration that narrows exposure further.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"low"},"cost_usd":0.000678,"input_tokens":3538,"output_tokens":648,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':14A,17A '-99136':15A,18A 'addit':248C 'anoth':125C 'applic':75B 'atom':121C,234C,239C 'b35f8caa0890':192C 'barrier':249C 'bio':160C,211C,227C 'call':120C,131C,210C 'case':218C 'code':89B 'commit':191C,204C 'complet':65B,158C,199C 'condit':108C 'context':126C 'crypt':5A,21B,37B,44B,103C,110C,113C,129C,149C,194C,207C,220C 'cve':13A,16A 'data':72B,81B,228C 'data-integr':71B 'dec':45B,111C,114C,122C,150C,235C,240C 'decrement':148C,189C 'decrypt':173C 'describ':87B 'destruct':201C 'disk':38B 'dm':4A,20B,36B,102C,193C,206C,219C 'dm-crypt':3A,19B,35B,101C 'drop':57B,140C,153C 'encrypt':39B 'endio':130C,197C,212C 'error':51B,118C,138C,232C 'exampl':128C 'execut':90B 'fail':9A,60B,78B,169C,178C 'final':55B 'fix':104C 'follow':96C 'freed':205C 'fulli':244C 'get':64B 'host':29B 'i/o':10A 'impact':69B 'instead':238C 'integr':73B 'interrupt':134C 'io':117C,137C,208C,221C,231C 'kernel':2A,24B,33B,94C 'last':155C 'layer':40B 'linux':1A,23B,32B,93C 'linux-kernel':22B 'live':222C 'longer':216C 'luk':25B 'may':76B,135C 'need':251C 'never':172C 'order':245C 'pend':46B,112C,115C,151C 'per':226C 'per-bio':225C 'place':186C 'race':6A,42B,107C 'read':48B,61B,116C,145C,167C,184C,230C 'refer':56B,142C,156C 'report':8A,180C 'resolv':100C 'runtim':26B 'self':28B 'self-host':27B 'set':136C 'sourc':86B 'stale':50B,163C 'status':52B,164C 'success':12A,67B,182C 'test':124C,237C,242C 'tini':106C 'treat':77B 'undecrypt':80B 'valid':83B 'vulner':97C 'wait':195C 'write':63B,176C","nicknames":[],"mitigations":[],"who_affected":"Systems running the Linux kernel with the device-mapper dm-crypt target active, such as LUKS-encrypted volumes. Hosts without dm-crypt devices are not exposed to this path. The sources do not give a fixed version or a configuration that narrows exposure further.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-28T11:17:33+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-99136","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-99136","severity":null,"published_at":"2026-10-28T11:17:33+00:00","modified_at":"2026-10-28T11:17:33+00:00","first_seen_at":"2026-10-28T11:32:35+00:00","fetched_at":"2026-10-28T11:32:35+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}