CVE-2026-90118: ntfs: fix off-by-one page overflow in ntfs_decompress()

Published Sep 17, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

ntfs: fix off-by-one page overflow in ntfsdecompress()

The per-token range check in ntfsdecompress() uses

if (cb >= cbsbend || dpaddr > dpsbend) break;

so dpaddr == dpsbend falls through to the symbol copy dpaddr++ = cb++, writing one byte past the destination page. Since NTFSSBSIZE == PAGESIZE the destination is a single page, so the byte lands in the adjacent page, and destofs is left one past the sub-block end (the later destofs &= ~PAGEMASK then yields 1, not 0, so the page is never finalized and later sub-blocks keep writing further past it). A corrupted compressed $DATA attribute thus produces a bounded run of out-of-bounds writes when the file is read.

Break as soon as dpaddr reaches dpsbend; a full sub-block still completes, as its final copy advances dpaddr to exactly dpsbend.

Affected Software

1 affected component
Linux Kernel

Event History

Sep 17, 2026
CVE Published
via MITRE·04:06 PM
Data Sourced
via MITRE·04:06 PM
Description

Frequently Asked Questions

1

What systems are exposed to this issue?

Systems running the Linux kernel are exposed when they read a corrupted compressed $DATA attribute on NTFS. The provided information does not identify affected kernel versions or whether a particular NTFS mount configuration is required.

2

What does an attacker need to exploit it?

An attacker needs a corrupted compressed NTFS $DATA attribute to be read by the vulnerable NTFS decompression path. The issue occurs during processing of the crafted file data and causes bounded out-of-bounds writes beyond the destination page.

3

How can I tell whether the vulnerable condition has occurred?

The described condition is triggered when decompression reaches the destination sub-block boundary and the code permits a copy with dp_addr equal to dp_sb_end. This leaves the destination offset one byte beyond the sub-block end, prevents page finalization, and allows later sub-block writes to continue past the page.

4

What is the relevant fix behavior?

The fix stops decompression as soon as dp_addr reaches dp_sb_end, rather than allowing a copy at that boundary. A complete sub-block remains valid because its final copy advances dp_addr to exactly dp_sb_end.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203