ХВАСан, АСан и КАСАН

Средство очистки аппаратных адресов (HWASan), средство очистки адресов (ASan) и средство очистки адресов ядра (KASAN) — это набор средств обнаружения ошибок памяти, которые следует использовать во время разработки.

Они вставляют инструментарий компилятора для каждой операции с памятью, что приводит к значительным накладным расходам — 2x ЦП, 15-30% ОЗУ (ASan: 100% ОЗУ), 50% размера кода, что делает их непригодными для использования в производстве.
Поскольку инструментарий вставляется для каждой операции с памятью, они обнаруживают более широкий спектр ошибок безопасности памяти, в том числе применимых к стеку и глобальным переменным. Это дополняет инструменты обнаружения кучи, описанные в разделах выше.

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

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

На arm64 мы рекомендуем использовать HWASan , а для 32-битной arm и платформ, отличных от Arm, мы рекомендуем использовать ASan . Они обеспечивают эквивалентную функциональность и должны использоваться для обнаружения ошибок безопасности памяти в коде пользовательского пространства.

Для их включения требуется отдельная сборка, поскольку двоичные файлы несовместимы с очищенными версиями без адресов. Чтобы включить HWASan, установите SANITIZE_TARGET=hwaddress в среде сборки или просто используйте цели с суффиксом _hwasan- .
Дополнительные сведения о HWAsan и ASan см. в документации.

Дезинфицирующее Дезинфицирующее средство адресов

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

KASAN — это аналог ядра инструментов пользовательского пространства, описанных выше. Он использует ту же реализацию компилятора. KASAN и ASan/HWASan дополняют друг друга, поскольку один инструмент применяется к ядру, а другой — к пользовательскому пространству. Мы рекомендуем включить оба одновременно, чтобы уменьшить количество конфигураций сборки и уменьшить матрицу тестирования.