Исследователи Центра Гельмгольца по информационной безопасности (CISPA) опубликовали результаты исследования защищённости процессоров на базе архитектуры RISC-V и раскрыли сведения об уязвимости, получившей кодовое имя GhostWrite. Уязвимость затрагивает RISC-V-процессоры XuanTie C910, производимые китайской компанией T-Head (подразделение Alibaba) и развиваемые в форме открытых проектов. Уязвимость даёт возможность атакующему, имеющему непривилегированный ограниченный доступ к системе, добиться чтения и записи в любые области физической памяти, а также получить доступ к управлению периферийными устройствами, такими как сетевые карты, использующими MMIO (Memory-Mapped Input/Output).
Уязвимость вызвана недоработками в архитектуре процессора, связанными с изоляцией добавленных производителем процессорных инструкций, расширяющих архитектуру набора команд RISC-V и позволяющих получить прямой доступ к DRAM, в обход механизмов виртуальной памяти. Работа некоторых расширенных инструкций напрямую с физической памятью вместо виртуальной памяти даёт возможность обойти изоляцию памяти между процессами.
Подготовленная техника проведения атаки на 100% воспроизводима и требует выполнения своего кода в течение всего нескольких микросекунд. Программные методы изоляции, такие как контейнеры и sandbox-окружения, не мешают эксплуатации уязвимости. Для блокирования уязвимости помогает только полное отключение поддержки векторных расширений, что приводит к снижению производительности в тестах rvv-bench на 33% (в аннотации к отчёту указано 77%, а на сводной странице – 33%, при этом в деталях упоминается снижение производительности memcpy на 33%, а memset на 8%), а также примерно в два раза сокращает доступный для приложений набор процессорных инструкций.
CPU XuanTie C910 являются одними из наиболее высокопроизводительных чипов RISC-V, имеющихся на рынке и уже активно используемых в серверах для облачных систем и ноутбуках. Например, проблема проявляется в серверах Scaleway Elastic Metal RV1, кластерах Lichee Cluster 4A, ноутбуке Lichee Book 4A, игровой консоли Lichee Console 4A, портативном компьютере Lichee Pocket 4A, одноплатных ПК Sipeed Lichee Pi 4A, Milk-V Meles и BeagleV-Ahead.
В качестве примера исследователями подготовлен эксплоит, позволяющий непривилегированному пользователю получить root-права в Linux. Эксплоит меняет содержимое таблицы страниц в памяти, используемой для трансляции виртуальных адресов в физические, для получения виртуальных адресов, связанных с любыми физическими адресами. Также подготовлен пример эксплоита для чтения содержимого памяти ядра и других процессов, что позволяет извлечь хранящиеся в памяти ключи шифрования и пароли.
Дополнительно исследователями выявлены ещё две менее опасные архитектурные уязвимости – одна затрагивает процессоры T-Head XuanTie C906, а другая T-Head XuanTie C908. Обе уязвимости ограничиваются вызовом отказа в обслуживании из-за остановки работы CPU. Уязвимости могут представлять опасность для облачных платформ, построенных на чипах T-Head XuanTie, так при наличии доступа к выполнению кода в облачном окружении имеется возможность остановить работу и других пользователей, обслуживаемых на том же сервере.
Проблемы были выявлены при помощи фреймворка RISCVuzz, созданного для fuzzing-тестирования CPU. Фреймворк выявляет отличия в реализации одинаковых расширенных инструкций на разных CPU, в соответствии с предположением, что из-за отсутствия единого реестра расширений набора команд RISC-V, одинаково кодируемые инструкции на чипах разных производителей могут приводить к выполнению разных действий. Проверка сводилась к сравнению поведения при обработке процессорных инструкций на разных CPU RISC-V и анализа возможных уязвимостей в ситуациях, в которых наблюдалось расхождение поведения.