Как стать автором
Обновить

Исследователь обнаружил драйвер AMD, который отключает для игр некоторые функции безопасности

Время на прочтение 2 мин
Количество просмотров 20K


16 мая ИБ-специалист Алекс Ионеску (Alex Ionescu) рассказал в Twitter, что он обнаружил на своем тестовом ПК на базе Ryzen 7 1700 внутри Windows 10 замаскированный драйвер AMD, который изменяет настройки системы при обнаружении в выполняемых процессах определенного списка игр. Такое поведение может стать проблемой для безопасности системы, так как позволяет использовать уязвимости.

Ионеску обнаружил, что в системе есть файл AMDPciDev.sys, который сертифицирован WHQL как драйвер PnP PCI и установлен в операционной системе как устройство с «фиктивной функцией PCIe».

Исследователя заинтересовала такая фиктивная ассоциация устройства, он решил провести реверс-инжениринг драйвера. В ходе этого процесса Ионеску зафиксировал некоторые странные особенности поведения драйвера, такие как работа его алгоритма хеширования, а также отслеживание создания и завершения новых процессов в системе и их мониторинг в процессе выполнения задач.

Оказалось, что драйвер «AMD PCI» задействовал процедуру уведомления о создании процессов, которая проверяет все имена запущенных процессов в системе и сравнивает их по своему внутреннему списку из 19 хешированных имен. Если найдено какое-либо совпадение с этим списком (фактически это был список исполняемых файлов игр, включая factorio, destinyJWE, rainbowsix, fallout76, league of legends, bfv5, warframe, r5apex, doometernal, modernwarfare, overwatch, anthem), то драйвер меняет в системе бит MSR для отключения или включения определенных аппаратных оптимизаций, например, выполняет отключение или управление кэшем инструкций. С одной стороны это может вызвать нестабильную работу системы под нагрузкой, но улучшить производительность игры. Ионеску пояснил, что драйвер вносит изменения не только для запущенной игры — он отключает часть защитных механизмов всей системы.

По мнению исследователя, проблема этого драйвера в том, что в его коде используется «очень слабый 32-битный хеш — например, CRC или XOR». Это может привести к конфликтам программных хешей, когда система считает, что игра запущена, даже если на самом деле это может быть критический процесс или другое программное обеспечение, которое само по себе не предназначено для этой специальной обработки драйвером. Также интерфейс драйвера позволяет проверять, есть ли какие-либо совпадения в его списке процессов, а также очищать списки и добавлять дополнительные хэши на время текущей загрузки в системе.

Другая проблема драйвера заключается в том, что его настройки безопасности позволяют любому приложению в пользовательском режиме задействовать непривилегированный интерфейс драйвера. Злоумышленник может использовать эту ситуацию, например, для создания сбоя в системе. Ионеску показал, как однострочная команда в PowerShell может привести к сбою системы на базе Ryzen 7. Код команды: (Get-NtFile \Device\NTPNP_PCI0031).DeviceIoControl(0x9C402400, 5, 5).

В итоге оказалось, что эти проблемы затрагивают только степпинг B1 процессоров серии Zen 1 (Ryzen 1xxx) и Zen 2 XT (Ryzen 3xxx). Ионеску уверен, что все равно проблема шире, так как сам драйвер уязвим, его использование запутано, его проверки плохо продуманы, список процессов произвольный, а AMD все делает за спиной пользователей, влияя на работу системы.
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
+29
Комментарии 21
Комментарии Комментарии 21

Другие новости

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн