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



    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 все делает за спиной пользователей, влияя на работу системы.

    Комментарии 20

      +5
      Интересно взглянуть на список процессов. Не очередной ли случай «оптимизации» для бенчмарков
        0
        Естественно!
          +3
          Мимо, всё это игры (и среди них Factorio :D)
          twitter.com/aionescu/status/1393783410955485184
          twitter.com/aionescu/status/1393793289002754048

          Самый главный вопрос: AMD, какого чёрта? Зачем маскировать эту деятельность под «PCI driver»? Подпись у этого драйвера должны быть отозвана как можно скорее, поскольку его название явно выбрано для того, чтобы ввести всех в заблуждение.
            0
            большая часть — онлайн дро игры… скорее всего были какие-то проблемы — навертели костылей…

            скорее всего был расчет, что таким компом будут пользоваться только для игр и ничем серьезным на нем заниматься не будут.

            возможно этот драйвер даже устанавливается только вместе с этими играми. И по умолчанию его нет.
              +4
              Нет, это драйвер из набора драйверов для чипсета.
              www.amd.com/en/support/kb/release-notes/rn-ryzen-chipset-2-04-04-111
                –2
                А он мешает «чему-то серьёзному»? Если на вашей машине есть «злоумышленник» который может вводить команды в PowerShell, то подозреваю, проблемы с безопасностью не в драйвере АМД.
                  +1
                  Ну так атакующему хотя бы недоступен условно-халявный local privilege escalation и натворить дел несколько сложнее.
                    0
                    А как с помощью драйвера то получить это? Можно разве что систему завесить, но тут есть 1000 и 1 способ, как это сделать без root, да и толку с зависшей системы. Слишком много заморочек на безопасности там, где это не надо, которые осложняют создание чего-то полезного, не зонды в космос запускаем всё же с домашнего компьютера. И вообще, если машина не имеет airgap, или на ней стоит домашний виндоуз, то она по дефолту не безопасна для ответственных задач.
                      0
                      | если машина не имеет airgap, или на ней стоит домашний виндоуз, то она по дефолту не безопасна для ответственных задач.
                      Это — повод устанавливать уязвимые драйвера мимикрирующие под нечто системное?

                      | может вводить команды в PowerShell
                      PowerShell полагаю приведён как пример запуска вредоносного кода, погуглите ещё 100500 если интересно.

                      Если на домашнем компе установлен WinHome и игра из списка, то вам не нужна безопасность или точнее нужны лишние дыры в безопасности? Там же и карточки сохранены банковские и прочая домашняя «бухгалтерия»

                      Вы будто противоречите по настроению, а думать не думаете вовсе над вопросом.
                +1
                Мимо, всё это игры

                Чего это мимо? Бенчмарки нынче в играх и делают в основном. Получится «вот, на АМД эта игра выдаёт столько-то фпс, а на Интеле/нвидии столько-то».
            0
            улучшить производительность игры

            отключает часть защитных механизмов всей системы.

            Да хотели как лучше, а получилось как всегда. В злой умысел не верю.
              –1
              По мнению исследователя, проблема этого драйвера в том, что в его коде используется «очень слабый 32-битный хеш — например, CRC или XOR»

              Это не проблема. Чем сложнее хэш тем больше процессорного времени тратится, если процессов будет много, то на хеширование может уйти не мало времени, и если драйвер будет жрать процессор как в не себя, то это не здоровая ситуация, к примеру на моем ryzen9 и c очень быстрой файловой системой, хеширование sha512 для файла около 70мб занимает 0.1с. 10 программ, уже создаст заметный лаг в 1с. Инсталятор в 350мб, уже хешируется 0.45с с помощью sha512. Думаю код драйвера стоит как обработчик прерывания, что в свою очередь может сказаться на обработке других прерываний, и тут важна скорость, и даже минимальная задержка будет снижать производительность всей системы. Еще не понятно сканируется только родительский процесс или все дочерние? Если все дочерние, то это уже будет реально заметный лаг на некоторых приложениях.
                +2

                речь идет про названия процессов, там объемы поменьше

                  +3

                  Мда, если действительно речь только про названия, это звучит как большая дырища. Любой процесс может назвать себя fallout76 и воспользоваться отключением каких-то защит. Хеш тогда значения не имеет, хоть xor-ом хешируй.

                +3
                А в чём новость?
                Разрабатываю игровой движок под opengl/vulkan — из userspace не так уж сложно устроить BSoD, если не заполнить до конца какой-нибудь буфер и отправить невалидные команды отрисовки.
                  +2
                  Вообще это неправильная ситуация, DoS из userspace это серьезная уязвимость. (просто представь, что доступ к этим интерфейсам есть и из браузера через webgl).
                    0
                    Не хватает кармы ответить всем сразу.
                    WebGL реализуется через трансляторы(angleproject) в браузерах, там свои проверки и подобное не допускается, я надеюсь.
                    qw1 — увы, все видеокарты в доме — только AMD, так что не было возможности узнать, подвержены ли этому другие вендоры. Однако стоит заметить, что в спецификациях OpenGL в подобных случаях говорится, что поведение полностью implementation-defined и может включать BSOD/kernel panic/краш приложения, в общем, стабильная работа системы не гарантируется.
                    0
                    Интересно, у вас видеокарта AMD? Реализации OpenGL/Vulkan поставляются в составе драйвера видеопроцессора.
                    –2
                    Так а в чём новость то? Драйвер от АМД в определённых ситуациях ставит недокументированный флаг для железа АМД в определённое состояние. Ну ок. А остальные драйверы в вашей системе, думаете, не тем же занимаются?
                      –1
                      В обычных условиях современная Виндовс, должна притормаживать систему, чтоб жизнь медом не казалась.
                      А в играх торможение можно и нужно отключать.

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое