Компания 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-устройств.