Атаки на графические процессоры: Паниковать не стоит
Исследователи из Intel заявили, что при запуске на графических процессорах вредоносного кода в компьютере обязательно остаются следы, которые можно обнаружить.
Вредоносные программы, запускаемые на графических процессорах, обнаружить труднее, но это вовсе не означает, что они полностью невидимы для средств безопасности. Исследователи из подразделения Intel McAfee Labs в сотрудничестве с членами Intel Visual and Parallel Computing Group решили подтвердить этот тезис, проанализировав вредоносную программу JellyFish, появившуюся в марте.
Согласно их заключению, вошедшему в последний квартальный отчет McAfee об угрозах, запуск вредоносного кода на графических процессорах обнаружить не так просто, но, вопреки утверждениям его разработчиков, определенные следы все же остаются.
Создатели JellyFish заявляли, что одним из преимуществ использования вредоносным кодом графических процессоров является обращение к основной памяти компьютера с применением технологии прямого доступа (Direct Memory Access, DMA).
Несмотря на справедливость этого утверждения, выделение графическому процессору значительной части системной памяти требует привилегий ядра и должно осуществляться с помощью процесса, запускаемого на основном процессоре.
По словам исследователей из Intel, средства безопасности могут отслеживать и блокировать выполнение таких операций. Более того, соответствующие возможности уже реализованы в существующих средствах защиты ядра.
Если установка вредоносной программы, запускаемой на графическом процессоре, не была обнаружена, пользовательский код и драйвер ядра, задействованные в этом процессе, теоретически могут быть удалены из операционной системы хоста. Но это приводит к определенным проблемам.
Например, в системе Windows выполнение кода на графическом процессоре инициирует запуск процесса Timeout Detection and Recovery (TDR), который перезагружает графическую плату. Продолжительность тайм-аута перед выполнением соответствующей процедуры составляет две секунды, и любая попытка изменить это значение должна вызывать подозрение у продуктов безопасности.
Кроме того, длительное выполнение операций графическим процессором приводит к тому, что графический интерфейс перестает реагировать на действия пользователя. А это может свидетельствовать о присутствии вредоносной программы.
Поэтому, по мнению исследователей, для атакующего лучше все же запускать свой процесс на хост-компьютере. Вредоносный код минимального объема обнаружить труднее, чем полнофункциональную программу, но это еще не означает, что системы безопасности не среагируют на его появление.
Разработчики JellyFish также утверждают, что код, сохраненный в графическом процессоре, остается там и после перезагрузки системы. Но, по словам исследователей Intel, речь здесь идет о сохранении данных, а не о коде, выполняемом автоматически.
«Провозглашаемая идея постоянного заражения заключается в том, что приложение, установленное на хост-компьютере, запускается при загрузке системы, извлекает данные из памяти графического процессора и перемещает их в пользовательское пространство, но это уже не так страшно, поскольку вредоносный код в пользовательском режиме должен существовать и вне графического процессора», – говорится в их заявлении.
Сегодня действительно ощущается нехватка инструментов, которые позволяли бы анализировать код, запускаемый на графических процессорах, однако продуктам безопасности такие функции и не нужны, потому что они способны обнаруживать другие признаки подобных атак.
С одной стороны, перемещение вредоносного кода в графический процессор и удаление его из основной системы затрудняет утилитам безопасности распознавание атак. С другой — следы вредоносной активности все равно остаются и их вполне можно обнаружить.
Некоторые технологии защиты, разработанные Microsoft для противодействия руткитам, функционирующим на уровне ядра (например, Patch Guard, средство контроля за наличием у драйверов цифровой подписи Early Launch Anti-Malware — ELAM — и Secure Boot), помогают предотвратить и проникновение вредоносного кода в графический процессор. Функция Microsoft Device Guard, реализованная в Windows 10, позволяет выполнять только программы, подписанные Microsoft, и приложения, заслуживающие доверия, что тоже можно считать весьма эффективным средством блокирования атак такого рода.
Впрочем, как бы то ни было, вечное противостояние меча и щита заставляет обе стороны активнее осваивать пространство графических процессоров, а последние инциденты побуждают сообщество производителей средств безопасности задуматься об улучшении противостояния подобным угрозам.