В приложении USB for Remote Desktop для перенаправления USB-устройств на удаленное сетевое соединение обнаружена уязвимость, с помощью которой киберпреступники могут добавить фейковое USB-устройство и получить привилегированные права в системе.
Найденная уязвимость получила идентификатор CVE-2020-9332 – она связана с работой программного драйвера приложения. Обнаруженный баг – серьезная проблема, потому что разработкой USB for Remote Desktop занимается компания FabulaTech, которая занимается поставкой приложений для крупных организаций со всего мира. Наиболее известные заказчики: Microsoft, Google, Harvard, Xerox и множество других корпораций, в том числе и государственных.
Уязвимость CVE-2020-9332 была найдена ИБ-специалистами из компании Sentinel One. Детальным изучением функционирования приложения USB for Remote Desktop они занялись после того, как была обнаружена «подозрительная активность» на устройстве клиента, который пользовался приложением на постоянной основе.
Во время изучения проблемы эксперты по информационной безопасности выявили, что из-за драйвера запускается небезопасная функция IoCreateDevice (является устаревшей подпрограммой) – при своей работе эта функция не инициирует безопасную проверку блокирования непривилегированного доступа. В процессе работы функция IoCreateDevice не представляет системе возможность назначения дескриптора безопасности при создании объекта устройства. Функция предполагает, что дескриптор безопасности определён в INF-файле.
Поэтому разработчики, использующие USB for Remote Desktop, зачастую вообще забывают об использовании дескриптора безопасности. Из-за этого устройства остаются доступными для всех.
Специалисты из компании Sentinel One отмечают: «В большинстве случаев драйверы обеспечивают защиту объектов или дескриптором, который полностью ограничивает доступ к системе, или специализированными проверочными инструментами. В случае с функцией IoCreateDevice ничего такого не происходит».
Также эксперты из Sentinel One заметили, что современные драйверы должны пользоваться подпрограммой WdmlibIoCreateDeviceSecure, чтобы создавать объекты устройства или, что еще лучше, придерживаться структуры KMDF.