CVE-2026-92500: состояние гонки в ext4 ведёт к NULL-разыменованию и панике ядра
В ядре Linux исправлена уязвимость в файловой системе ext4, связанная с состоянием гонки при буферизованной записи во встроенные (inline) данные inode. Одновременный page fault может перевести inline-данные в экстенты между write_begin и write_end, что приводит к NULL-разыменованию, потере данных или панике ядра (BUG_ON). Уязвимость затрагивает системы на Linux с ext4 и inline-данными; патч вошёл в основную ветку ядра.
Подробности
Уязвимость затрагивает ядро Linux (продукт Linux) в компоненте ext4. Обработчики write_end ранее определяли режим завершения записи, проверяя «живое» состояние inode через ext4_has_inline_data(inode) и ext4_test_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA), вместо того чтобы полагаться на состояние, подготовленное в write_begin. Конкурентный поток — например, ext4_page_mkwrite() — может конвертировать inline-данные в экстенты в промежутке между write_begin и write_end. В этом случае обработчик write_end не распознавал путь завершения inline-записи и переходил к логике для экстентов. Поскольку блочные буферы в write_begin не выделялись, folio_buffers(folio) оставался NULL, что приводило к разыменованию NULL-указателя или потере данных. Дополнительно: в ext4_write_inline_data_end() блокировка xattr захватывается уже после подготовки записи. Если конкурентный page fault конвертирует inline-данные в экстенты между проверкой состояния в write_end и захватом блокировки, последующая проверка вызывала панику ядра через BUG_ON(!ext4_has_inline_data(inode)). Исправление вводит флаг EXT4_WRITE_DATA_INLINE (бит 2) и передаёт состояние записи через параметр fsdata, трактуя его как набор битовых флагов, а не взаимоисключающих значений. ext4_write_begin() и ext4_da_write_begin() выставляют этот бит при успешной подготовке inline-записи; на входе ext4_write_begin() сбрасывает бит для корректной обработки повторных попыток VFS; обработчики write_end проверяют бит побитовым И. Также BUG_ON заменён на корректный путь повторной попытки: при очистке inline-данных после захвата блокировки xattr ресурсы освобождаются и возвращается 0, чтобы универсальный путь записи повторил операцию. Значение CVSS в записи CVE не указано.Что делать
Рекомендуется обновить ядро Linux до версии, содержащей исправление CVE-2026-92500, и перезагрузиться. Если обновление невозможно, следует оценить эксплуатацию ext4 с inline-данными в критичных системах и, где это применимо, ограничить сценарии конкурентной записи и page fault на затрагиваемых томах; надёжной точечной митигации без патча запись CVE не описывает. После обновления проверьте, что используемая версия ядра включает соответствующий коммит ext4. Итог: уязвимость позволяет конкурентным операциям нарушить согласованность состояния inline-записи, что ведёт к отказу в обслуживании (паника ядра) или потере данных. Установка обновлённого ядра закрывает проблему.Источник: CVE Project (cvelistV5)
