Механизм логирования оказался троянским конём.
Исследователь из Positive Technologies обнаружил критическую уязвимость в реализации файловой системы NTFS, которая позволяет локальному атакующему получить привилегии SYSTEM через специально подготовленный виртуальный диск (VHD). Уязвимость получила идентификатор CVE-2025-49689 и затрагивает Windows 11 версии 22H2.
Проблема связана с механизмом Log File Service (LFS), используемым NTFS для ведения журнала транзакций. Во время монтирования диска NTFS вызывает цепочку функций ntfs!NtfsMountVolume
→ ntfs!InitializeRestartState
→ ntfs!ReadRestartTable
, где происходит некорректная обработка поля ClientDataLength
в структуре LFS_RECORD
. При установке этого поля в значение 0xFFFFFFFF
возникает переполнение при вычислении длины записи и обход критической проверки.
В результате возникает чтение данных за пределами допустимого диапазона и последующее копирование большого объема памяти с помощью memmove
, что приводит к чтению за границами выделенного буфера из $LogFile
. Для активации уязвимости необходимо подменить LFS-структуры в VHD и обойти механизм кеширования Lfcb->CachedRestartArea
, чтобы система принудительно прочитала поддельный RESTART_AREA
с фальшивой таблицей атрибутов.
Дальнейшее развитие атаки возможно за счёт подделки структуры OPEN_ATTRIBUTE_DATA
, которая содержит указатель на SCB
— объект управления файловыми потоками. NTFS использует эту структуру в функции NtfsCloseAttributesFromRestart
, где происходит работа с AVL-деревом через вызов RtlDeleteElementGenericTableAvl
.
Этот вызов позволяет перехватить выполнение в колбеке CompareRoutine
и провести запись произвольных данных по произвольному адресу в памяти ядра. В качестве инструмента управления потоком исполнения исследователь использует функцию RtlpFcBufferManagerReferenceBuffers
, превращая контроль над деревом в примитив write-what-where.
Для устойчивой эксплуатации задействован механизм IO_RING, позволяющий перезаписать указатель на буфер в структуре _IORING_OBJECT
и получить доступ к произвольной записи в память ядра. Дополнительно применяется классический приём с pipe-based memory allocation для обхода SMEP/SMAP, а также цепочка подделок: SCB → FCB → VCB.
Полученные возможности позволяют не только читать содержимое ядра, но и исполнять произвольный код с максимальными привилегиями. В демонстрации использован классический приём — подмена токена пользователя на SYSTEM.
Эксплойт работает даже в системах с включёнными митигациями CFG и HVCI, что делает угрозу особенно значимой. Исследователь предлагает возможные направления для усиления надёжности эксплуатации: более точное управление исчерпанием памяти, обход SMAP и предотвращение ранних сбоев ядра до достижения нужного контекста.
На момент публикации обновления безопасности от Microsoft не выпущено. Рекомендуется избегать монтирования VHD-дисков из непроверенных источников и контролировать системные события, связанные с работой $LogFile
.
В Матрице безопасности выбор очевиден