GWP-ASan и KFENCE

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

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

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

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

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

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

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

GWP-ASan

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

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

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