30.05.2017

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

Интернет-портал cnews.ru, май, 2017<br>
Статья с упоминаниями блога компании "Аладдин Р.Д." на сайте "Хабрахабр"

В файловой системе 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.

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

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

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

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

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