Санитайзеры — это группа инструментов динамического анализа, которые находят ошибки в программах во время выполнения с помощью дополнительных инструментов, вставленных компилятором. Это включает в себя обнаружение проблем с безопасностью памяти . Android поддерживает и настоятельно рекомендует использовать следующие дезинфицирующие средства:
Аппаратный адрессанитайзер (HWASan)
HWAsan — это основное дезинфицирующее средство, обеспечивающее обнаружение проблем с безопасностью памяти. Он требует ARM64 и может обнаружить:
- Переполнение или опустошение буфера стека и кучи
- Куча использования после бесплатного
- Использование стека после области видимости
- Использование стека после возврата
- Двойное бесплатное или дикое бесплатное
Дезинфицирующее средство для адресов (ASan)
ASan — это инструмент, похожий на HWASan. Он работает на других платформах, но не поддерживается на Android.
Дезинфицирующее средство KernelAddress (КАСан)
KASan — это аналог ядра описанных выше инструментов пользовательского пространства. Он использует ту же реализацию компилятора. KASan и ASan/HWASan дополняют друг друга, поскольку один инструмент применяется к ядру, а другой — к пользовательскому пространству. Мы рекомендуем включить оба варианта одновременно, чтобы уменьшить количество конфигураций сборки и уменьшить матрицу тестирования.
Дезинфицирующее средство UndefineBehavior (UBSan)
UBSan выполняет инструментирование во время компиляции для проверки различных типов неопределенного поведения (небезопасного для памяти). Сюда входит проверка переполнения знаковых и беззнаковых целых чисел (IntSan), проверка границ массивов статического размера (BoundsSan) и множество других типов неопределенного поведения. IntSan и BoundsSan также подходят для включения в производство в качестве меры по снижению безопасности.