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 все делает за спиной пользователей, влияя на работу системы.
Dvlbug
Интересно взглянуть на список процессов. Не очередной ли случай «оптимизации» для бенчмарков
vis_inet
Естественно!
dartraiden
Мимо, всё это игры (и среди них Factorio :D)
twitter.com/aionescu/status/1393783410955485184
twitter.com/aionescu/status/1393793289002754048
Самый главный вопрос: AMD, какого чёрта? Зачем маскировать эту деятельность под «PCI driver»? Подпись у этого драйвера должны быть отозвана как можно скорее, поскольку его название явно выбрано для того, чтобы ввести всех в заблуждение.
dyam
большая часть — онлайн
дроигры… скорее всего были какие-то проблемы — навертели костылей…скорее всего был расчет, что таким компом будут пользоваться только для игр и ничем серьезным на нем заниматься не будут.
возможно этот драйвер даже устанавливается только вместе с этими играми. И по умолчанию его нет.
dartraiden
Нет, это драйвер из набора драйверов для чипсета.
www.amd.com/en/support/kb/release-notes/rn-ryzen-chipset-2-04-04-111
Scinolim
А он мешает «чему-то серьёзному»? Если на вашей машине есть «злоумышленник» который может вводить команды в PowerShell, то подозреваю, проблемы с безопасностью не в драйвере АМД.
svosin
Ну так атакующему хотя бы недоступен условно-халявный local privilege escalation и натворить дел несколько сложнее.
Scinolim
А как с помощью драйвера то получить это? Можно разве что систему завесить, но тут есть 1000 и 1 способ, как это сделать без root, да и толку с зависшей системы. Слишком много заморочек на безопасности там, где это не надо, которые осложняют создание чего-то полезного, не зонды в космос запускаем всё же с домашнего компьютера. И вообще, если машина не имеет airgap, или на ней стоит домашний виндоуз, то она по дефолту не безопасна для ответственных задач.
tangro
Чего это мимо? Бенчмарки нынче в играх и делают в основном. Получится «вот, на АМД эта игра выдаёт столько-то фпс, а на Интеле/нвидии столько-то».