In the Linux kernel, the following vulnerability has been resolved:
ntfs: check overflow when iterating ATTR_RECORDs
Kernel iterates over ATTR_RECORDs in mft record in ntfs_attr_find(). Because the ATTR_RECORDs are next to each other, kernel can get the next ATTR_RECORD from end address of current ATTR_RECORD, through current ATTR_RECORD length field.
The problem is that during iteration, when kernel calculates the end
address of current ATTR_RECORD, kernel may trigger an integer overflow bug
in executing a = (ATTR_RECORD*)((u8*)a + le32_to_cpu(a->length)). This
may wrap, leading to a forever iteration on 32bit systems.
This patch solves it by adding some checks on calculating end address of current ATTR_RECORD during iteration.
| Software | From | Fixed in |
|---|---|---|
| linux / linux_kernel | - | 4.9.334 |
| linux / linux_kernel | 4.10 | 4.14.300 |
| linux / linux_kernel | 4.15 | 4.19.267 |
| linux / linux_kernel | 4.20 | 5.4.225 |
| linux / linux_kernel | 5.5 | 5.10.156 |
| linux / linux_kernel | 5.11 | 5.15.80 |
| linux / linux_kernel | 5.16 | 6.0.10 |