CVE-2026-90048 в Linux Kernel: переполнение буфера в NTFS3

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-образов и использовать средства изоляции для снижения риска эксплуатации.

Официальные источники​


  1. NVD — CVE-2026-90048
  2. fs/ntfs3: fix slab-out-of-bounds write in ni_create_attr_list() - kernel/git/stable/linux.git - Linux kernel stable tree
  3. fs/ntfs3: fix slab-out-of-bounds write in ni_create_attr_list() - kernel/git/stable/linux.git - Linux kernel stable tree
  4. fs/ntfs3: fix slab-out-of-bounds write in ni_create_attr_list() - kernel/git/stable/linux.git - Linux kernel stable tree
  5. fs/ntfs3: fix slab-out-of-bounds write in ni_create_attr_list() - kernel/git/stable/linux.git - Linux kernel stable tree
  6. fs/ntfs3: fix slab-out-of-bounds write in ni_create_attr_list() - kernel/git/stable/linux.git - Linux kernel stable tree
  7. CVEs — The Linux Kernel documentation

История обновлений статьи​


  • 18.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ