
Согласно отчету SafeFirmware одной из неприятных особенностей проблемы безопасности контроллеров ASMedia является их присутствие не только в дискретных чипах, но и в программной модели центральных процессоров AMD Ryzen. При проектировании последних была задействована интеллектуальная собственность ASMedia, что и повлияло на ситуацию.
История болезни и диагноз
Уязвимость состоит в использовании bus-master функциональности USB-контроллера для незаконного доступа к памяти. Bus-master операции состоят в обращении периферийного устройства к оперативной памяти в обход центрального процессора (правильнее — в обход ядра центрального процессора, поскольку DRAM-контроллер физически также входит в составе микросхемы CPU).

К счастью и к несчастью
К счастью, назначение адресов, по которым bus-master устройство имеет право обратиться к ОЗУ, находится под управлением драйвера устройства, а драйвер работает в режиме привилегий Kernel Mode (ring 0). Иначе такое устройство, обращаясь к памяти в обход защиты сегментов и страниц, неизбежно станет «тараном», дающим возможность читать и писать по любому адресу ОЗУ.
Злой умысел состоит в перешивке встроенной микропрограммы контроллера, подключенного к PCIe-шине. В результате USB-контроллер обращается по адресам, заданным внутренним вредоносным кодом, а не полученным от законного драйвера.
Вместе с тем, в режиме аппаратной виртуализации ввода-вывода, когда благодаря подсистеме IOTLB, защита памяти и трансляция страниц распространяется на bus-master устройства, незаконный доступ будет перехвачен или как минимум затруднен.
Эффективность IOTLB, как защитного механизма, зависит от сценария его использования системным программным обеспечением. В типовом случае блок IOTLB способен предотвратить такие обращения к памяти, которые незаконно пересекают границы, установленные гипервизором виртуализации. Например, попытки одной из гостевых ОС получить доступ к памяти хост-платформы или памяти другой гостевой ОС. При этом операции, нарушающие привилегии внутри одной ОС (как хостовой, так и гостевой), обычно не блокируются средствами IOTLB.
Также отметим, что модификация микрокода xHCI-контроллера является отдельной задачей, требующей обращения к привилегированным системным регистрам и решить ее злоумышленник должен еще до того момента, когда контроллер перешел под его управление.
Корни проблемы
Сложные периферийные контроллеры, в частности — контроллеры USB3 xHCI, нерационально строить на «жесткой логике» — решение выходит слишком громоздким. (Справедливости ради, на другой чаше весов в данном случае может быть увеличение производительности контроллера). Кроме того, разработчик лишается возможности исправлять ошибки проекта методом обновления микрокода. Если так, то обязательный компонент USB-контроллера — встроенный процессор, которому требуется микрокод. Наличие микрокода означает необходимость его «прошивки». А из этого следует возможность запрограммировать bus-master устройство на доступ к памяти. И не только для обмена с памятью при выполнении команд хоста, но и по собственному вредоносному сценарию.
Очевидно, вышесказанное относится не только к USB xHCI, и тем более не только к чипам ASMedia. Позволим себе предположить, что повышенное внимание к разработкам этой компании связано с интеграцией ее решений в системную логику и процессоры AMD, что предъявляет более жесткие требования к надежности и безопасности, чем статус производителя дискретных чипов.