В 2018 году разработчик чипов Arm представил функцию аппаратной безопасности под названием Memory Tagged Extensions (MTE) в качестве защиты от ошибок безопасности памяти. Но это может оказаться не так эффективно, как надеялись вначале.
Реализованный и поддерживаемый в прошлом году в телефонах Google Pixel 8 и Pixel 8 Pro, а ранее и в Linux, MTE призван помочь обнаружить нарушения безопасности памяти, а также защитить устройства от атак, которые пытаются использовать недостатки безопасности памяти.
Говорят, что ошибки безопасности памяти ответственны за большинство уязвимостей безопасности в больших базах кода. И в течение последних нескольких лет в государственном и частном секторах предпринимались согласованные усилия по уменьшению таких недостатков путем продвижения языков программирования, безопасных для памяти, программных методов повышения безопасности кода и аппаратных опций, таких как SPARC ADI и Arm MTE.
MTE работает путем маркировки 16-байтовых блоков физической памяти четырьмя битами метаданных. Эти метаданные служат ключом, разрешающим доступ. Когда указатель ссылается на данные в помеченном блоке памяти, аппаратное обеспечение проверяет, содержит ли указатель ключ, соответствующий ключу блока памяти, чтобы получить доступ к данным. Несоответствие выдает ошибку.
Тэг, ты ЭТО
Если копнуть глубже, то вот как в основном работает MTE. Когда MTE активен, программы могут использовать специальные инструкции для пометки 16-байтовых блоков памяти 4-битным ключом. Например, при выделении фрагмента памяти из кучи этот фрагмент (выровненный и округленный до 16 байт) может быть помечен тем же 4-битным ключом, и генерируется указатель на этот фрагмент, содержащий ключ в своих старших неиспользуемых битах. .
Когда программа в дальнейшем использует этот указатель, ссылаясь на какую-то часть блока, все работает нормально. Указатель по-прежнему содержит правильный ключ. Но если блок освобожден и его ключ изменен, последующее использование этого устаревшего указателя вызовет ошибку из-за несовпадающего ключа, что указывает на программную ошибку или попытку использования уязвимости, и то, и другое вы хотите отловить.
А если программа будет взломана с помощью какой-либо другой уязвимости, и код будет ссылаться на помеченный блок без правильного ключа в указателе, это также будет перехвачено.
Таким образом, MTE может защитить от попыток использовать распространенные ошибки памяти в стиле C/C++, такие как переполнение буфера, использование кучи после освобождения и использование стека после возврата, которые могут привести к перехвату и компрометации программного обеспечения и систем. , а также помогать разработчикам выявлять эти ошибки во время тестирования. По крайней мере, на это надеется Арм.
Утечки
К сожалению, MTE, похоже, недостаточно безопасен, чтобы выполнить свои обещания по безопасности. Исследователи из Сеульского национального университета в Южной Корее, Samsung Research и Технологического института Джорджии в США обнаружили, что они могут взломать MTE посредством спекулятивного исполнения.
Авторы – Джухи Ким, Джинбом Пак, Шихён Ро, Джеён Чон, Ёнджу Ли, Тэсу Ким и Бёнён Ли – говорят то же самое в своей исследовательской работе «TikTag: расширение разметки памяти Breaking Arm со спекулятивным исполнением».
Посмотрев на MTE, чтобы оценить, обеспечивает ли он заявленное преимущество безопасности, специалисты говорят, что это не так. Вместо этого они обнаружили, что могут извлечь теги MTE менее чем за четыре секунды примерно в 95 процентах случаев.
“[W]Мы обнаружили, что на MTE действительно возможны атаки спекулятивного выполнения, что серьезно подрывает безопасность MTE», — сообщают авторы. «Мы обнаружили два новых гаджета, названных TIKTAG-v1 и TIKTAG-v2, которые могут привести к утечке тега MTE произвольный адрес памяти».
Это не ставит под угрозу безопасность приложений на Arm; это означает, что MTE можно обойти в правильных условиях.
Спекуляции на тему безопасности
Спекулятивное выполнение — это практика выполнения определенных операций на современных процессорах до того, как они потребуются, и либо использование результатов, если этого требует путь программы, либо их отбрасывание, если программа выбирает другой путь. Это приводит к ускорению выполнения приложений, хотя и добавляет значительный риск безопасности, примером которого являются ошибки Meltdown и Spectre, которые появились в 2018 году и с тех пор преследуют производителей аппаратного и программного обеспечения.
Используя гаджеты — шаблоны машинных инструкций в памяти — ученые обнаружили, что они могут наблюдать шаблоны доступа к памяти, чтобы определить тег MTE данного адреса памяти. По их словам, основные причины связаны с тем, как результаты проверки тегов влияют на предварительную выборку данных ЦП, и с тем, как ядро ЦП предотвращает пересылку с сохранением и загрузкой при возникновении ошибки проверки тега.
Авторы говорят, что их исследование расширяет предыдущую работу, проведенную в мае 2024 года, которая обнаружила, что MTE уязвим для спекулятивного зондирования. Более того, они утверждают, что их выводы бросают вызов работе Google Project Zero, которая не обнаружила никаких атак по побочным каналам, способных взломать MTE.
С помощью кода, подтверждающего концепцию, теги MTE были извлечены из Google Chrome на Android и ядра Linux с помощью этой методики, при этом уровень успеха превысил 95 процентов менее чем за четыре секунды, как утверждается.
Авторы разместили свой код на GitHub. «Когда гаджеты TikTag выполняются спекулятивно, состояние кэша различается в зависимости от того, вызывают ли гаджеты ошибку проверки тегов или нет», — поясняется в репозитории кода. «Поэтому, наблюдая за состояниями кэша, можно получить утечку результатов проверки тегов, не вызывая никаких исключений».
Доступ к утекшим тегам не гарантирует эксплуатацию. Это просто означает, что MTE не сможет остановить злоумышленника, способного воспользоваться конкретной ошибкой памяти на затронутом устройстве.
Исследователи поделились своими выводами с Arm, которая признала их в заметке разработчика, опубликованной в декабре 2023 года. Фирма, занимающаяся разработкой микросхем, заявила, что разницы во времени успешной и неудачной проверки тегов может быть достаточно для создания спекулятивного оракула MTE — механизма для выявления тегов MTE. – в процессорах Cortex-X2, Cortex-X3, Cortex-A510, Cortex-A520, Cortex-A710, Cortex-A715 и Cortex-A720.
Однако Арм утверждает, что риск не подрывает ценность MTE, даже несмотря на то, что он призывает к внедрению механизмов предотвращения спекулятивных оракулов. Авторы предполагают, что меры по смягчению последствий, которые создают барьеры для спекуляций и ограничивают создание гаджетов, могут быть реализованы в коде ядра Chromium и Linux.
По словам исследователей, команда Google Chrome признала наличие проблемы, но отказалась исправлять ее в движке Chrome V8, поскольку он «не предназначен для гарантии конфиденциальности данных памяти и тегов MTE». Авторы отмечают, что они в некоторой степени согласны, поскольку Chrome не реализует MTE по умолчанию, хотя они все равно хотели бы, чтобы предложенные ими меры по смягчению последствий были реализованы.
Когда авторы сообщили о своей работе над оракулами MTE на устройствах Pixel 8 команде безопасности Android в апреле 2024 года, они заявили, что команда признала проблему, устранила ее и назначила вознаграждение за обнаружение ошибок.
Arm и Google не сразу ответили на запросы о комментариях. ®
2024-06-18 01:11:00
1718676495
#Вооруженная #охрана #случаев #разрушается #спекулятивными #действиями #Register

