CVE-2026-97437 in Linux
Сводка
по VulDB • 24.09.2026
В ядре Linux была устранена следующая уязвимость:
ntfs3: исправлено чтение за пределами буфера в функциях ntfs_dir_emit() и hdr_find_e()
Проверка границ в функции ntfs_dir_emit() сравнивает fname->name_len (количество символов) с e->size (размер в байтах), не учитывая кодировку UTF-16LE, требующую 2 байта на символ, а также размер заголовка ATTR_FILE_NAME:
```c if (fname->name_len + sizeof(struct NTFS_DE) > le16_to_cpu(e->size)) ```
Это вычисляет выражение: name_len + 16 > e_size.
Правильная проверка должна учитывать заголовок ATTR_FILE_NAME (66 байт до имени файла) и размер символа UTF-16LE (2 байта на символ):
```c sizeof(NTFS_DE) + offsetof(ATTR_FILE_NAME, name) + name_len * sizeof(short) > e_size ```
Что вычисляет выражение: 16 + 66 + name_len * 2 > e_size.
Правильный расчет уже реализован в функции fname_full_size() заголовочного файла ntfs.h и используется в cmp_fnames(), namei.c и fslog.c, но не применялся в пути readdir (readdir path).
Специально созданный образ файловой системы NTFS с индексной записью, содержащей малое значение e->size, но большое fname->name_len, обходит текущую проверку, что приводит к чтению функцией ntfs_utf16_to_nls() данных за пределами границы записи.
Кроме того, в функцию hdr_find_e() добавлена проверка key_size для обеспечения того, чтобы объявленное значение key_size не превышало доступные данные записи, предотвращая чтение функций сравнения за границами записи на пути поиска (lookup path).
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.