ZeroHour

CVE-2026-89601

niche

Lost inode updates for sync-mode files in Linux kernel ext2 filesystem

CVSS 3.1
8.8 high
EPSS
Published
()
Modified
AI analysis

A flaw in the Linux kernel's ext2 filesystem code silently drops inode metadata updates for inodes marked IS_SYNC — files opened with O_SYNC, flagged with chattr +S, or living on a sync-mounted ext2 filesystem. In ext2_setsize() (e.g., truncate/ftruncate) and ext2_xattr_set2() (setting extended attributes), the code called sync_inode_metadata() without first calling mark_inode_dirty(), and that helper only persists inodes that are already dirty, so size changes and xattr changes could never reach disk. An attacker or ordinary workload writing such sync-flagged files can therefore trigger silent metadata loss, resulting in corrupted files, reverted sizes/attributes, and confidentiality/integrity/availability impact (CVSS 3.1 score 8.8, AV:N/AC:L/PR:L). Any system running a kernel whose ext2 driver lacks the fix and actually using ext2 with sync semantics is affected. No public proof of concept exists and no exploitation has been observed.

What to do: Apply a kernel update from your distribution once it includes the upstream fix (unconditionally mark_inode_dirty() before sync_inode_metadata() in ext2_setsize() and ext2_xattr_set2()). Until patched, avoid sync semantics on ext2 — do not use O_SYNC, chattr +S, or sync mounts on ext2 volumes, and consider migrating affected filesystems to ext4. After crashes or heavy sync-flagged workloads on ext2, run fsck and verify file sizes and extended attributes for silent corruption.

Affected
Linux kernel (ext2 filesystem driver)
Estimated exposure
nicheplausibly low thousands to tens of thousands of systems (legacy/embedded ext2 deployments); no precise count available — Linux is ubiquitous, but ext2 is a legacy filesystem largely superseded by ext4, and the bug additionally requires sync-flagged inodes (O_SYNC, chattr +S, or sync mounts), so only a small subset of deployments plausibly qualify.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: ext2: Fix lost inode updates for IS_SYNC inodes ext2_setsize() and ext2_xattr_set2() had a construct like: if (IS_SYNC(inode)) { sync_inode_metadata(inode, 1); } else { mark_inode_dirty(inode); } which leads to lost inode updates for IS_SYNC inodes because sync_inode_metadata() does anything only if the inode is already dirty and hence inode updates may be simply lost. Fix the problem by unconditionally marking the inode dirty and *then* call sync_inode_metadata().

Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.