Патч от Meltdown привел к более критичной уязвимости Windows 7x64/2008R2

dxlgfpeogux1r0olo9rj9c_ycrg.jpeg
 
Патч, закрывающий уязвимость Meltdown привел к более критичной уязвимости систем Windows 7×64 и Windows 2008R2. Уязвимости подвержены системы, обновленные патчами 2018–01 или 2018–02. Уязвимости не подвержены системы, не пропатченные с декабря 2017 года, либо если на них установлен кумулятивный патч 2018–03.

Патч Meltdown от Microsoft открыл еще большую брешь в безопасности в Windows 7/2008, позволяя любому пользовательскому приложению читать содержимое из ядра операционной системы и даже записывать данные в память ядра.

Шведский эксперт по ИТ-безопасности Ульф Фриск обнаружил эту уязвимость, работая над устройством PCILeech, созданном для проведения атак с прямым доступом к памяти (DMA) и дампу защищенной памяти операционной системы.

image

По словам эксперта, исправление Meltdown от Microsoft (для CVE-2017–5754), случайно перевернуло бит, который контролирует права доступа для памяти ядра.

Бит прав пользователя/ядра был установлен на пользователя в PML4 (карте страниц четвёртого уровня). Это сделало таблицы страниц доступными для кода режима пользователя в каждом процессе. В штатном режиме таблицы страниц должны быть доступны только самому ядру. В Windows 7 состояние PML4 фиксируется в позиции 0×1ED, смещение 0xF68 (в Windows 10 это значение случайно). Это означает, что PML4 всегда будет отображаться по адресу: 0xFFFFF6FB7DBED000 в виртуальной памяти.

image

Значение в PML4e 0×0000000062100867 (из приведенного выше примера) указывает, что установлены биты 0, 1, 2, что означает, что он доступен для чтения и записи.

image

PML4 является базой 4-уровневой иерархии таблиц страниц в памяти, используемой модулем управления памятью процессора (MMU) для преобразования виртуальных адресов процесса в адреса физической памяти в ОЗУ.

Эта проблема затронула только 64-разрядные версии Windows 7 и Windows Server 2008 R2. Microsoft исправила ошибку, переопределив бит разрешения PML4 обратно в исходное значение в патче 2018–3.

Для проверки своей системы можно воспользоваться утилитой pcileech, выгрузив память в файл:

pcileech.exe dump -out memorydump.raw -device totalmeltdown -v -force

Для удобства можно воспользоваться Dokany, — смонтировать запущенные процессы и виртуальную память ядра как файлы и папки. Чтобы смонтировать процессы необходимо выполнить следующую команду:

pcileech.exe mount -device totalmeltdown

image


UPD: PoC эксплоит для проверки уязвимости.

© Habrahabr.ru