HWASan, ASan y KASAN

Hardware Address Sanitizer (HWASan), Address Sanitizer (ASan) y Kernel Address Sanitizer (KASAN) son un conjunto de herramientas de detección de errores de memoria que deben usarse durante el desarrollo.

Insertan instrumentación del compilador para cada operación de memoria, lo que agrega una sobrecarga significativa: 2x CPU, 15-30 % de RAM (ASan: 100 % de RAM), 50 % del tamaño del código, lo que los hace inadecuados para su uso en producción.
Dado que la instrumentación se inserta para cada operación de memoria, detectan una gama más amplia de errores de seguridad de la memoria, incluidos los aplicables a la pila y los globales. Esto complementa las herramientas de detección de montones descritas en las secciones anteriores.

Los desarrolladores deben verificar la presencia de bloqueos consultando /data/tombstones o logcat para ver los informes de errores.

HWASan y ASan para detectar errores de seguridad de la memoria del espacio de usuario

En arm64 recomendamos usar HWASan , mientras que para arm de 32 bits y para plataformas que no son Arm recomendamos usar ASan . Proporcionan una funcionalidad equivalente y deben usarse para detectar errores de seguridad de la memoria en el código del espacio de usuario.

Habilitarlos requiere una compilación separada, ya que los archivos binarios no son compatibles con las versiones desinfectadas sin direcciones. Para habilitar HWASan, configure SANITIZE_TARGET=hwaddress en el entorno de compilación, o simplemente use los objetivos con el sufijo _hwasan- .
Para obtener más información sobre HWASan y ASan, consulte la documentación.

Desinfectante de dirección Desinfectante de dirección

KASAN para detectar errores de seguridad de la memoria del kernel

KASAN es la contraparte del núcleo de las herramientas de espacio de usuario anteriores. Comparte la misma implementación del compilador. KASAN y ASan/HWASan son complementarios ya que una herramienta se aplica al kernel y otra al espacio de usuario. Recomendamos habilitar ambos al mismo tiempo para reducir la cantidad de configuraciones de compilación y reducir la matriz de prueba.