Неправильные инструкции в процессорах T-Head C910 RISC-V компании Alibaba сносят всю безопасность

Важные новости

Неправильные инструкции в процессорах T-Head C910 RISC-V от Alibaba сносят всю безопасность

Исследователи безопасности Black Hat Computer в Центре информационной безопасности имени Гельмгольца CISPA в Германии обнаружили серьезные уязвимости безопасности в некоторых процессорах RISC-V от T-Head Semiconductor, дочерней компании Alibaba.

Самая серьезная из них, которая затрагивает четыре ядра процессора T-Head C910 в SoC TH1520, получила название GhostWrite, поскольку она позволяет мошенническому приложению или пользователю считывать и записывать физическую память, а также выполнять произвольный код с привилегиями ядра (супервизора) и машинного режима, что позволяет им полностью захватить управление устройством.

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

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

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

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

Исследователи, которые все это заметили — Фабиан Томас, Лоренц Хеттерих, Жуйи Чжан, Дэниел Вебер, Лукас Герлах и Михаэль Шварц — планируют представить свои выводы на конференции по безопасности Black Hat в Лас-Вегасе, штат Невада, в среду.

Они также опубликовали веб-сайт ghostwriteattack.com и техническую статью под названием «RISCVuzz: обнаружение архитектурных уязвимостей ЦП с помощью дифференциального аппаратного фаззинга».

RISC-V — это архитектура набора инструкций открытого стандарта (ISA). В отличие от других более широко используемых ISA, таких как x86 и Arm, она доступна на безвозмездной основе, и любой желающий может внести в нее свой вклад.

Разработчики чипов могут использовать спецификации ISA и разрабатывать собственные совместимые с RISC-V процессоры, а также могут выбрать поддержку дополнительных расширений для добавления функциональности к своим ядрам. Таким образом, проблемы безопасности в C910 связаны с собственной реализацией ISA T-Head, в частности с нестандартной реализацией векторного расширения, а не с самими спецификациями или другими чипами RISC-V.

Эта открытость и расширяемость сделали RISC-V популярным среди поставщиков, отмечают специалисты CISPA Helmholtz в своей статье. Но результатом стал растущий диапазон аппаратных реализаций с различными функциями и мерами безопасности, а также с собственными недостатками безопасности.

Чтобы лучше оценить поведение и характеристики чипа, исследователи разработали структуру фаззинга под названием RISCVuzz, которая использует различные реализации RISC-V для выполнения дифференциального фаззинга. Инструмент тестирования предполагает, что архитектурный результат каждой инструкции должен быть одинаковым для разных процессоров, и помечает экземпляры, где поведение различно.

Исследователи использовали RISCVuzz на пяти доступных в настоящее время конструкциях ядра ЦП RISC-V, работающих под управлением 64-битного Linux: T-Head XuanTie C906/C908/C910 и SiFive U54/U74. Они обнаружили три архитектурные уязвимости ЦП в чипах T-Head, не говоря уже о других ошибках, которые вызывают ошибки сегментации в двух последних основных версиях QEMU.

Самая серьезная уязвимость, GhostWrite, затрагивает C910 в TH1520 SoC и позволяет непривилегированным пользователям записывать что угодно в память, не заботясь о функциях безопасности и изоляции.

«Эта атака надежна на 100 процентов, детерминирована и занимает всего несколько микросекунд», — поясняет сайт GhostWrite. «Даже такие меры безопасности, как контейнеризация Docker или песочница, не могут остановить эту атаку. Кроме того, злоумышленник может захватить аппаратные устройства, которые используют отображенный в память ввод/вывод (MMIO), что позволит ему отправлять любые команды на эти устройства».

Использовать ее так же просто, как запустить следующую последовательность инструкций:

vsetvli zero, zero, e8, m1 vmv.v.x v0, a0 vse128.v v0, 0(t0)

Где регистр t0 содержит адрес физической памяти, в которую вы хотите записать данные, даже если вам не разрешено это делать, а a0 — байт, который вы хотите записать; и это просто происходит. Реализация T-Head своей нестандартной инструкции vse128.v сломана, поскольку она не обрабатывает адрес как виртуальный, а вместо этого обращается напрямую к физической памяти, позволяя любому приложению, включая вредоносное ПО, вмешиваться в ядро ​​ОС, гипервизор или прошивку машинного уровня и захватывать устройство.

Кроме того, на C910 чтение с виртуального адреса 0, если оно поддерживается физической оперативной памятью, приводит к зависанию ядра ЦП независимо от уровня привилегий до момента выключения и включения питания. Черт возьми.

Это напоминает нам об ошибке Intel F00F 1990-х годов, из-за которой процессор блокировался до полной перезагрузки, а также о других ошибках чипа, возникших в отрасли за многие годы.

Также есть две уязвимости, влияющие на T-Head XuanTie C906 и C908, описанные в статье как уязвимости ЦП типа «остановка и подрыв». Они позволяют непривилегированному злоумышленнику вызвать сбой ЦП. Эти ошибки, если их эксплуатировать, потребуют перезагрузки.

В статье перечислены другие недостатки в конструкции T-Head, такие как инструкции, которые считаются незаконными, когда они не должны быть таковыми, или генерация неправильного типа исключения.

Основанная на C910 SoC TH1520 используется французским облаком Scaleway.

Следующие устройства также считаются уязвимыми для GhostWrite C910:

  • Lichee Cluster 4A, вычислительный кластер
  • Lichee Book 4A, ноутбук
  • Lichee Console 4A, крошечный ноутбук
  • Lichee Pocket 4A, игровая консоль
  • Sipeed Lichee Pi 4A, одноплатный компьютер (SBC)
  • Milk-V Meles, SBC
  • BeagleV-Ahead, SBC

Ученые в своей статье отмечают, что в Шаньдунском университете в Китае есть кластер RISC-V с вариантом C910, хотя они не смогли определить, затронут ли этот вариант.

Исправить эти ошибки непросто. Как мы уже говорили, единственным предлагаемым смягчающим фактором для GhostWrite является отключение неисправного векторного расширения. Как объясняют авторы, это нарушает работу приложений, использующих векторные инструкции, и добавляет накладные расходы в размере 77 процентов, согласно измерениям rvv-bench.

«Для ошибки остановки ЦП C906 мы не находим смягчающих факторов, поскольку ответственное расширение поставщика не может быть отключено», — говорится в статье.

Исследователи говорят, что они раскрыли свои выводы T-Head Alibaba, которая признала и воспроизвела ошибки C910 и C906, хотя еще не отреагировала на отчет C908.

Майкл Шварц, преподаватель CISPA Helmholtz и один из соавторов статьи, рассказал The Register: «Scaleway уведомил пользователей их экземпляров RISC-V, предложив обновить ядро ​​из-за уязвимостей безопасности. Это то, что пользователи должны сделать вручную. Насколько мне известно, это обновление ядра отключает векторные расширения».

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

«Сложность x86 ISA требует наличия слоя «прошивки» (т. е. микрокода) для поддержки некоторых очень сложных инструкций», — пояснил Шварц. «Побочным эффектом этого является то, что поведение таких инструкций также может быть изменено с помощью обновления микрокода. Кроме того, обновления микрокода позволяют вводить новые функции для обхода уязвимостей.

«Мы видели это для уязвимостей на процессорах Intel, таких как ZombieLoad: обновление микрокода добавило новую функцию для очистки внутренних буферов. Хотя это не устранило уязвимость, оно гарантировало, что не осталось никаких секретных данных для утечки.

«RISC-V имеет только простые инструкции, которые не требуют такого слоя «прошивки». Таким образом, нет также возможности добавлять новые функции через обновление. Тем не менее, можно было бы также иметь микрокод на RISC-V, но я не знаю ни одного ЦП RISC-V, реализующего это».

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

«Учитывая растущую сложность ЦП RISC-V, мы выступаем за такой слой микрокода на RISC-V, чтобы иметь возможность смягчить уязвимости ЦП», — заключает статья. ®

Новости сегодня

Последние новости