GWP-ASan и KFENCE

GWP-ASan и KFENCE — это инструменты вероятностного обнаружения памяти для пользовательского пространства и ядра соответственно. Если этот параметр включен, небольшое количество выделений защищено дополнительными страницами памяти, окружающими выделенную память. Это позволяет обнаруживать переполнение буфера и использование после освобождения с незначительными затратами на производительность. Даже при небольшой частоте выборки для защищенных выделений при масштабном развертывании они могут эффективно обнаруживать ошибки безопасности памяти. С момента своего появления эти инструменты помогли выявить многочисленные ошибки платформы и оказались ценным инструментом для повышения стабильности и безопасности. Мы рекомендуем поставщикам включать их и внимательно следить за ошибками, обнаруженными на устройствах конечных пользователей.

Разработчикам следует проверять наличие сбоев, проверяя /data/tombstones , logcat или отслеживая конвейер DropboxManager поставщика на наличие ошибок конечных пользователей.

Дополнительную информацию см. в нашей документации по отладке собственного кода Android.

Отладка собственного кода платформы

GWP-ASan для обнаружения ошибок безопасности пользовательской памяти

GWP-ASan был представлен в Android 11 для распределения кучи пользовательского пространства. Когда GWP-ASan обнаруживает ошибку, он записывает отчет о сбое с Cause: [GWP-ASan]: и завершает процесс. Отчеты об ошибках содержат дополнительную информацию о выделении и освобождении, которая упрощает выявление основной причины.

GWP-ASan включается случайным образом при запуске для 1% системных процессов или приложений, а также для приложений, которые устанавливают android:gwpAsanMode в своем файле AndroidManifest.xml .

ГВП-

KFENCE для обнаружения ошибок безопасности памяти ядра

В Android 12 появился KFENCE для распределения кучи ядра. Когда KFENCE обнаруживает ошибку, он записывает отчет о сбое, начинающийся с BUG: KFENCE, отключает защитные страницы и продолжает выполнение. Это включает механизм обнаружения ошибок ядра, который минимально влияет на взаимодействие с пользователем.

Чтобы узнать больше о KFENCE, см. документацию, доступную на https://www.kernel.org.