7 Марта, 2019

Security Week 10: уязвимости в драйверах NVIDIA

Лаборатория Касперского
Вот что мы еще ни разу не обсуждали в формате дайджеста, так это уязвимости в драйверах для видеокарт. Компания NVIDIA опубликовала 28 февраля информацию о восьми уязвимостях: практически все позволяют повышать привилегии или выполнять произвольный код. Одна брешь относится к модному ныне типу атак по стороннему каналу — факт «закрытия» такой проблемы с помощью простого обновления драйвера сам по себе примечателен.

Кажется, проблемы в драйверах для видеокарт застали сообщество специалистов по информационной безопасности врасплох: по сути мы имеем дело только с информацией от производителя, и насколько эти уязвимости применимы в реальных атаках, непонятно. Так или иначе, рекомендуется обновить драйверы до последней версии — это 419.17 для видеокарт GeForce. Отдельно доступны обновления для драйверов в Unix-like системах — там закрывается только уязвимость side channel.

Пакеты драйверов объемом в сотни мегабайт уже давно никого не удивляют. В случае NVIDIA это скорее полноценный набор программ для работы с видеокартой, обеспечения совместимости в играх, поддержки устройств виртуальной реальности, возможностей потокового вещания и многого другого. Самая свежая версия драйверов (с заплатками) весит чуть больше 500 мегабайт. Впрочем, сервисы и дополнительное ПО NVIDIA ответственны только за одну уязвимость из восьми, все остальные обнаружены в системной части.

Единственное исключение — в софте для обработки трехмерного видео, для которого теоретически возможно выполнение произвольного кода, повышение привилегий или отказ в обслуживании при открытии «подготовленного» файла.

Еще шесть уязвимостей так или иначе приводят к DoS, повышению привилегий, а в двух случаях — к выполнению произвольного кода. Данных о том, насколько такие атаки реализуемы на практике, нет, но можно предположить, что самый «плохой» сценарий — это когда уязвимость в видеодрайвере может быть вызвана, например, через пользующийся видеоускорителем браузер.

Наконец, еще одна брешь теоретически позволяет реализовать атаку по стороннему каналу. Уровень опасности по методу оценки CVSS V3 — довольно низкий, атака должна выполняться локально, возможности удаленной эксплуатации бага нет. Эта уязвимость и сценарии ее эксплуатации были описаны специалистами Калифорнийского Университета в Риверсайде в ноябре 2018 года.

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

Самый очевидный вариант — с помощью приложения OpenGL атаковать другое приложение, обращающееся к видеокарте по этому же программному интерфейсу. Этот метод применяется только на настольном компьютере. Но теоретически атаковать можно и приложения, использующие видеокарту для вычислений. Это направление в целом более «интересное», так как затрагивает и серверную инфраструктуру.

Пример практической атаки: стороннее приложение измеряет задержки при обращении к видеокарте и получает информацию об объеме выделяемой памяти в атакуемом приложении (в данном случае, в браузере). Так как веб-сайты по-разному используют видеопамять, анализ этой информации в динамике позволяет с достаточно высокой вероятностью определить, к какому веб-сайту обращается пользователь. В следующем примере эту идею развивают до определения момента, когда пользователь вводит пароль на определенном веб-сайте. Сам пароль перехватить не получится, но информация о проведении такой операции теоретически имеет ценность для атакующего.

Атака на приложение, использующее SDK CUDA, позволила исследователям восстановить параметры работы нейросети — то, что разработчики нейросетей обычно стараются держать в секрете. Исследователи отметили, что снизить информативность «утечек» информации можно путем модификации API, что, судя по всему, и было сделано в обновлении драйверов для Windows, Linux и BSD-систем.

Атака на системный софт и утилиты для устройств вряд ли представляет серьезную опасность при наличии гораздо более простых методов кражи пользовательских данных и получения контроля над системой. Еще меньше потенциала у атаки по сторонним каналам, но теоретически возможность доступа к приватным данным представляет интерес — например, при использовании ресурсов видеокарты для шифрования. В контексте драйверов NVIDIA стоит обратить внимание на поддержку старых устройств. Список видеокарт NVIDIA, признанных устаревшими самим разработчиком, есть тут , но проще посмотреть, для каких видеокарт доступна самая последняя версия драйвера, закрывающая свежие уязвимости. Выходит, что поддерживаются все видеокарты начиная с GeForce 6XX. Эта серия была выпущена в 2012 году, и судя по информации производителя, для нее это был последний патч. Не самая неожиданная новость, но старое железо, более не поддерживаемое производителем на уровне софта, может добавлять уязвимостей системе даже с современным программным обеспечением.

Disclaimer: Мнения, изложенные в этом дайджесте, могут не всегда совпадать с официальной позицией «Лаборатории Касперского». Дорогая редакция вообще рекомендует относиться к любым мнениям со здоровым скептицизмом.