Возврат к списку

Google внедрит в Android новые технологии работы с памятью

27.08.2019     

Компания Google совместно с компанией ARM внедрят в Android новую технологию – расширение для маркировки памяти (MTE). Опция поможет избежать утечек и усилить безопасность устройств.

ARM – британский производитель и разработчик архитектуры 32-разрядных и 64-разрядных RISC-процессоров для мобильных устройств.

Суть проблемы

Разработчики изучили миллионы строк кода и установили, что ошибки, связанные с утечкой памяти – составляют половину высокоприоритетных ошибок безопасности в Android 9. Особенно распространены такие ошибки при работе с С и С++: эти языки позволяют программировать на низком уровне, но встроенных «сборщиков мусора» в них нет.

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

Инструменты тестирования вроде ASAN и HWASAN часто позволяют обнаружить утечки памяти, но применять их на современных устройствах трудно из-за высоких накладных расходов.

MTE как универсальное решение

MTE  (Memory Tagging Extension) – аппаратная функция для устранения ошибок безопасности в памяти. Она позволяет разработчикам обнаруживать их с минимальными издержками. У функции два режима:

  • точный – предоставляет более подробную информацию о нарушении памяти;
  • неточный – предполагает более низкую нагрузку на процессор и больше подходит для постоянной работы.

ARM опубликовала технический документ по MTE. Кроме того, компания добавила документацию по новой функции в «Справочное руководство по архитектуре ARM версии 8.5».

Варианты использования

Разработчики рассказали, что MTE можно будет использовать в различных схемах. К примеру, есть версия функции для систем тестирования ASAN/HWASAN. Ее удобно использовать для тестирования и фаззинга в лабораторных условиях. Такой подход позволит находить больше ошибок за меньшее время, с меньшими затратами и сократить сложность процесса разработки. 

Во многих случаях MTE позволяет тестировать безопасность памяти, используя тот же двоичный файл, который поставляется в продуктовый релиз. Отчеты об ошибках, которые генерирует MTE, будут такими же подробными и применимыми, как и отчеты ASAN и HWASAN.

Авторы технологии также рассказали, что MTE будет использоваться в качестве основного механизма для тестирования сложных программных сценариев на производстве. Разработчики приложений и OEM-производители смогут выборочно включать MTE для частей программного стека. Если пользователи согласятся отправлять отчеты об ошибках памяти, эта информация будет доступна разработчикам в стандартных системах вроде Google Play Console.

Практическая полезность

В большинстве случаев вероятность обнаружения каждого случая ошибочного доступа к памяти составляет 90%, утверждают разработчики. Технология также предупредит попытки использовать критически важные для безопасности компоненты со стороны злоумышленников. А значит, Android станет безопаснее.

В Google отметили, что MTE предоставляет огромные преимущества при приемлемом снижении производительности. Компания рассматривает поддержку MTE как возможное фундаментальное требование для определенных Android-устройств.

Подробнее об изменениях


Автор:
Ксения Шестакова Обозреватель


Комментарии
Избранное Подписка Сортировка: Древо
1. 3vs 27.08.19 11:53 Сейчас в теме
"Компания Google совместно с компанией ARM внедрят в Android новую технологию – расширение для маркировки памяти (MTE)."
И эти туда же с маркировкой! :-)
У нашего правительства подцепили что ли?
chemezov; Brawler; +2 Ответить
2. VmvLer 27.08.19 12:44 Сейчас в теме
Google... и избежать утечек и усилить безопасность устройств звучит также нелепо как сказ про козла и капусту.
chemezov; Brawler; +2 Ответить
3. protexprotex 172 27.08.19 20:18 Сейчас в теме
Да... В С++ сборщика нет. Бывает, пока найдешь утечку памяти - три пота сойдет. Можно, конечно использовать класс автоматического освобождения памяти при разрушении экземпляра класса, но с void * указателями такой фокус не пройдет.
Оставьте свое сообщение