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

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

Дезинфицирующее средство HWAddress (HWAsan)

HWAsan — это основное дезинфицирующее средство, обеспечивающее обнаружение проблем с безопасностью памяти. Он требует ARM64 и может обнаружить:

  • Переполнение или опустошение буфера стека и кучи
  • Куча использования после бесплатного
  • Использование стека после области действия
  • Использование стека после возврата
  • Двойное бесплатное или дикое бесплатное

Адресное дезинфицирующее средство (ASan)

ASan — это инструмент, похожий на HWASan. Он работает на других платформах, но не поддерживается на Android.

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

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

Дезинфицирующее средство UndefineBehavior (UBSan)

UBSan выполняет инструментирование во время компиляции для проверки различных типов неопределенного поведения (небезопасного для памяти). Сюда входит проверка переполнения знаковых и беззнаковых целых чисел (IntSan), проверка границ массивов статического размера (BoundsSan) и множество других типов неопределенного поведения. IntSan и BoundsSan также подходят для включения в производство в качестве меры по снижению уровня безопасности.