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

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

dggyyursdrwxbcpoumkqzed_c74.png


Кажется, проблемы в драйверах для видеокарт застали сообщество специалистов по информационной безопасности врасплох: по сути мы имеем дело только с информацией от производителя, и насколько эти уязвимости применимы в реальных атаках, непонятно. Так или иначе, рекомендуется обновить драйверы до последней версии — это 419.17 для видеокарт GeForce. Отдельно доступны обновления для драйверов в Unix-like системах — там закрывается только уязвимость side channel.
Пакеты драйверов объемом в сотни мегабайт уже давно никого не удивляют. В случае NVIDIA это скорее полноценный набор программ для работы с видеокартой, обеспечения совместимости в играх, поддержки устройств виртуальной реальности, возможностей потокового вещания и многого другого. Самая свежая версия драйверов (с заплатками) весит чуть больше 500 мегабайт. Впрочем, сервисы и дополнительное ПО NVIDIA ответственны только за одну уязвимость из восьми, все остальные обнаружены в системной части.

3yzbbc9hgkg_afdreb_aghhzm1y.png


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

uxofupf8c9v5s3qfbldznory09y.png


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

36cobeehlqqdyo19dx-eyivdxes.png


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

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

fta1b-19f-6c7ytcb2-xklt7j08.png


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

elku6k4dxb96bd9rb44itadyris.png


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

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

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

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

© Habrahabr.ru