С помощью «плохого» имени файла можно навсегда подвесить Windows

Стратегия безопасности Пользователю Техника
мобильная версия
, Текст: Роман Георгиев
В файловой системе NTFS выявлена уязвимость, которая позволяет удалённо вызывать «зависание» системы на компьютерах под управлением Windows Vista, 7, 8 и 8.1. Проблему вызывает обращение к главной файловой таблице ($MFT). Пользователи Windows 10 и браузера Chrome в безопасности.

Путь к $MFT приводит в ад

Российские исследователи безопасности из компании Aladdin обнаружили своеобразную особенность в файловой системе NTFS, которая позволяет удаленно «подвешивать» ПК под управлением операционных систем Windows Vista, Windows 7, 8 и 8.1.

На блог-платформе Habrahabr по этому поводу опубликована обширная статья, в которой объясняется суть и причина проблемы. По словам автора, пользователя под ником Anatolymik, если при обращении к какому-либо файлу на системном диске использовать в качестве имени каталога комбинацию $MFT (например, C:\$MFT\<любое значение>), система подвисает, причем восстановить ее работоспособность не помогает даже перезагрузка.

«Если попытаться открыть любой файл относительно файла $mft, доступ ко всему тому «С» повиснет, а так как этот том является системным, подвиснет и вся система. При этом не нужно иметь каких-либо прав. Если же том был не системным, то повиснет только доступ к этому тому, но если выполнить перезагрузку, то система повиснет на ней», - написал Anatolymik.

Далее в своей статье он детально описывает причины, по которым такая проблема может возникнуть. А причины эти непосредственно связаны с принципами работы всей системы NTFS, ее функций, связанных с поиском каталогов и файлов на дисках, а также механизма сериализации ERESOURCE.

С помощью особенности файловой системы NTFS можно удаленно вызывать
«зависание» системы на компьютерах под управлением Windows Vista, 7, 8 и 8.1

«Когда будет произведена попытка открыть файл относительно файла $mft, функция NtfsFindStartingNode не найдет его, т.к. эта функция выполняет поиск несколько иначе, в отличие от функции NtfsOpenSubdirectory, которая находит этот файл всегда, - пишет Anatolymik. - Следовательно, начнет работу цикл, начиная с корня файловой системы. Далее функция NtfsOpenSubdirectory откроет этот файл и захватит его ERESOURCE монопольно. На следующей итерации цикл обнаружит, что файл не является директорией, и, следовательно, прервет свою работу с ошибкой. А при завершении своей работы функция NtfsCommonCreate посредством функции NtfsTeardownStructures попытается закрыть его. Функция NtfsTeardownStructures, в свою очередь, столкнется с тем, что она не сможет закрыть файл, т.к. он открывается самой файловой системой при монтировании. При этом, вопреки ожиданиям функции NtfsCommonCreate, функция NtfsTeardownStructures не освободит ERESOURCE $mft файла. Таким образом, он останется захваченным навсегда. Поэтому, например, при попытке создания файла или чтения файлов тома, файловая система NTFS попытается захватить ERESOURCE $mft файла и зависнет на этом этапе навсегда».

Практическое значение

Потенциальный злоумышленник не сможет нанести какой-либо реальный вред системе или запустить произвольный код. Однако вызвать «зависание» он сможет без особых усилий, например, указав в качестве URL изображения локальный путь к несуществующему файлу - с указанием на $mft.

Пользователи Chrome защищены от подобных трюков: этот браузер проверяет корректность адреса загружаемого изображения. В Firefox и IE подобных механизмов нет, поэтому пользователи этих браузеров находятся в зоне риска.

Пользователи Windows 10 защищены от угрозы, поскольку эта операционная система базируется на новой файловой системе ReFS. В ней подобная уязвимость отсутствует.