CVE: CVE-2026-90048
Продукт: Linux Kernel
Дата публикации: 16.09.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: нет данных; процентиль нет данных
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В драйвере NTFS3 ядра Linux обнаружена критическая уязвимость, позволяющая злоумышленнику выполнить код с привилегиями ядра через специально сформированный образ файловой системы. Статья описывает механизм переполнения, условия эксплуатации и способы проверки исправления.
Основные характеристики
Уязвимость приводит к записи за пределы выделенного кучевого буфера в модуле NTFS3 при обработке специально сформированной записи MFT. Это может повредить память ядра и привести к выполнению кода с привилегиями ядра.
- Тип ошибки: Slab-out-of-bounds write в функции
ni_create_attr_list().
- CVSS: 9.8 (CRITICAL). Вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
- Условия атаки: Требуется возможность смонтировать NTFS-образ (например, через loopback) и выполнить системный вызов
setxattr.
- Эксплуатация: Подтверждена через отчет KASAN, публичный PoC в виде патча и описания бага доступен в git-репозитории ядра.
- EPSS: Данные об EPSS в предоставленных источниках отсутствуют.
Какие продукты и версии затронуты
Уязвимость затрагивает ядра Linux, содержащие драйвер NTFS3 с уязвимой логикой в функции
ni_create_attr_list(). Проблема была введена в коммите 4342306f0f0d и присутствует в версиях, не содержащих исправления.- Версии ядра: Все версии, содержащие драйвер NTFS3 и не включающие коммиты исправления (см. раздел «Исправление»).
- Компонент:
fs/ntfs3/frecord.c.
- Платформы: Любые архитектуры, поддерживающие NTFS3 (включая arm64, x86_64 и др.).
Причина уязвимости
Функция
ni_create_attr_list() выделяет буфер фиксированного размера, равного размеру записи MFT (record_size), для хранения списка атрибутов. Однако при обработке атрибутов из вредоносной записи MFT количество записей в списке может превысить выделенный размер.Минимальный резидентный атрибут занимает 24 байта на диске, но в списке атрибутов он расширяется до 32 байт. Поскольку количество атрибутов в записи не ограничено, специально сформированная запись с множеством таких атрибутов приводит к переполнению буфера. Проверка размера буфера отсутствовала, а итоговый размер вычислялся только после завершения цикла записи.
Как работает атака
Атакующий создает NTFS-образ, в котором запись MFT содержит большое количество минимальных резидентных атрибутов. При монтировании такого образа и попытке изменения расширенных атрибутов файла (через
setxattr) вызывается цепочка функций: ntfs_set_ea() -> ni_insert_resident() -> ni_insert_attr() -> ni_ins_attr_ext() -> ni_create_attr_list().Внутри
ni_create_attr_list() происходит запись данных за пределы выделенного буфера kmalloc-1k. Это приводит к повреждению памяти ядра, что может быть использовано для выполнения произвольного кода с привилегиями ядра. Ошибка подтверждена отчетом KASAN: slab-out-of-bounds in ni_create_attr_list.Условия успешной эксплуатации
Для успешной эксплуатации уязвимости атакующему необходимо:
- Доступ к системе: Возможность смонтировать NTFS-образ (например, через loopback-устройство) на целевой системе.
- Права: Возможность выполнения системного вызова
setxattrдля изменения атрибутов файла в смонтированной файловой системе.
- Специфичный образ: Наличие специально сформированного NTFS-образа с вредоносной записью MFT, содержащей избыточное количество минимальных атрибутов.
Возможный сценарий атаки
Злоумышленник получает доступ к системе, где разрешено монтирование NTFS-образов. Он создает файл-образ NTFS с вредоносной структурой MFT.
После монтирования образа через
mount -o loop он открывает файл и вызывает setxattr для добавления атрибута. Это запускает уязвимый код в ядре, приводящий к переполнению буфера и потенциальному выполнению кода с привилегиями root.Есть ли публичный эксплойт
Публично доступен технический отчет об уязвимости и патч, исправляющий проблему. В git-репозитории ядра Linux опубликованы коммиты с описанием бага и отчетом KASAN. Конкретный рабочий PoC-код или эксплойт для реальной атаки в предоставленных источниках не указан, но механизм атаки полностью описан и воспроизводим на основе предоставленных данных.
Признаки эксплуатации
Специфичные IOC для этой уязвимости в источниках не приведены. Общие признаки атаки включают:
- Журналы ядра: Сообщения KASAN или oops/panic, связанные с
ni_create_attr_listилиntfs3.
- Системные вызовы: Частые вызовы
setxattrна смонтированных NTFS-томмах.
- Процессы: Необычные процессы, выполняющие монтирование loopback-устройств с NTFS-образами.
Как обнаружить атаку
Для обнаружения атаки рекомендуется:
- Мониторинг журналов: Анализ
dmesgи/var/log/kern.logна наличие сообщений об ошибках памяти в модуле NTFS3.
- Аудит системных вызовов: Использование eBPF или auditd для отслеживания вызовов
setxattrв контексте NTFS-файловых систем.
- Контроль монтирования: Ограничение монтирования NTFS-образов для недоверенных пользователей или в изолированных средах.
Как проверить свою версию
Для проверки версии ядра и наличия драйвера NTFS3 используйте:
Bash:
uname -r
uname -a
cat /proc/version
Проверьте, содержит ли ядро коммиты исправления (см. раздел «Исправление»). Если ядро не содержит этих коммитов, оно уязвимо.
Исправление
Исправление заключается в изменении функции
ni_create_attr_list() для вычисления точного размера буфера на основе фактических атрибутов перед выделением памяти. Патч опубликован в git-репозитории ядра Linux.- Коммиты исправления:
7c4841e2a62794a3bab7c1ff0540580f387e377f,7e9aee7e4d9767cc3e423b3beecb01c7ebb6bbcd,a84f3db72561c4d9281c5ff721ce46b9ffa7f30e,d07e281f2a7710502985d6f80b95ddac8f4e81d5,fa2215cf451414b0512cd6f7d37a057893811f4d.
- Действия: Обновите ядро до версии, содержащей эти коммиты, или примените патч вручную.
Временные меры защиты
До применения исправления рекомендуется:
- Ограничить монтирование NTFS: Запретить монтирование NTFS-образов для недоверенных пользователей или в публичных средах.
- Использовать AppArmor/SELinux: Ограничить доступ к системным вызовам
setxattrдля процессов, работающих с NTFS-томмами.
- Изоляция: Выполнять операции с NTFS-образами в контейнерах или виртуальных машинах с ограниченным доступом к ядру.
Как проверить устранение уязвимости
Для проверки применения исправления:
- Проверка коммитов: Убедитесь, что ядро содержит коммиты исправления (см. раздел «Исправление»).
- Тестирование: Выполните тестовый сценарий с вредоносным NTFS-образом в изолированной среде и убедитесь, что ошибка KASAN не воспроизводится.
- Журналы: Проверьте отсутствие сообщений об ошибках памяти в модуле NTFS3 после обновления.
Вывод
CVE-2026-90048 представляет серьезную угрозу для систем, использующих драйвер NTFS3. Обновление ядра до версии с исправлением является критически важным. До этого рекомендуется ограничить доступ к монтированию NTFS-образов и использовать средства изоляции для снижения риска эксплуатации.
Официальные источники
- NVD — CVE-2026-90048
- fs/ntfs3: fix slab-out-of-bounds write in ni_create_attr_list() - kernel/git/stable/linux.git - Linux kernel stable tree
- fs/ntfs3: fix slab-out-of-bounds write in ni_create_attr_list() - kernel/git/stable/linux.git - Linux kernel stable tree
- fs/ntfs3: fix slab-out-of-bounds write in ni_create_attr_list() - kernel/git/stable/linux.git - Linux kernel stable tree
- fs/ntfs3: fix slab-out-of-bounds write in ni_create_attr_list() - kernel/git/stable/linux.git - Linux kernel stable tree
- fs/ntfs3: fix slab-out-of-bounds write in ni_create_attr_list() - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 18.09.2026 — Опубликована первая версия материала.
