CVE-2026-89492: ocfs2: validate directory-index entry counts when reading metadata
In the Linux kernel, the following vulnerability has been resolved:
ocfs2: validate directory-index entry counts when reading metadata
ocfs2validatedxleaf() and ocfs2validatedxroot() check the ECC and signature of an indexed-directory block before it reaches higher-level callers, but neither validator bounds the ocfs2dxentrylist counts against the capacity of the block that holds them.
ocfs2dxdirsearch() then walks
for (i = 0; i < le16tocpu(entrylist->denumused); i++) dxentry = &entrylist->deentries[i];
over denumused entries with no bounds check. entrylist is either dxleaf->dllist (from ocfs2readdxleaf) or, for an inline root, dxroot->drentries. A crafted on-disk image can set denumused (and decount, which is the countedbyle() bound of deentries) to 0xffff and make the walk read far past the end of the 4KB metadata block, giving a slab out-of-bounds read reachable from any path lookup, stat() or open() on an indexed directory once the image is mounted.
Commit 775c17386a6f ("ocfs2: validate dxroot extent list fields during block read") already bounds drlist for the non-inline dxroot, but left the inline drentries path and the dxleaf dllist unchecked. Add the same read-time validation for both entry lists: decount must equal the capacity of the block (ocfs2dxentriesperleaf()/perroot()) and denumused must not exceed decount, rejecting corrupted metadata with -EFSCORRUPTED before ocfs2dxdirsearch() can walk an out-of-range entry array.
decount is always written as exactly the block capacity when a leaf or inline root is formatted, so the equality check does not reject any valid image.
Found by 0sec automated security-research tooling (https://0sec.ai).
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Linux kernel ocfs2to a version that resolves this vulnerability.Patch 775c17386a6f
Event History
Frequently Asked Questions
What conditions are required for exploitation?
An attacker needs to provide a crafted OCFS2 on-disk image that is mounted by the affected system. The image must contain a malformed indexed directory with directory-index entry counts set beyond the metadata block capacity.
What activity can trigger the out-of-bounds read after the image is mounted?
Any path lookup, stat(), or open() involving the malformed indexed directory can reach the vulnerable directory search path. The issue is therefore reachable through ordinary filesystem access rather than requiring a specialized administrative operation.
Which directory-index metadata layouts are affected?
The affected entry lists are the dx_leaf dl_list and the inline dx_root dr_entries layout. Validation for the non-inline dx_root dr_list extent list had already been added, but it did not cover these paths.