Desinfectantes

Los sanitizers son un grupo de herramientas de análisis dinámico que encuentran errores en los programas en tiempo de ejecución a través de instrumentación adicional insertada por el compilador. Esto incluye la detección de problemas de seguridad de la memoria . Android admite y recomienda encarecidamente el uso de los siguientes desinfectantes:

Desinfectante de direcciones HWA (HWASan)

HWASan es el principal desinfectante para detectar problemas de seguridad de la memoria. Requiere ARM64 y puede detectar:

  • Desbordamiento o subdesbordamiento del buffer de pila y montón
  • Uso del montón después de gratis
  • Uso de la pila después del alcance
  • Uso de la pila después de la devolución
  • Doble gratis o salvaje gratis

Desinfectante de dirección (ASan)

ASan es una herramienta similar a HWASan. Funciona en más plataformas, pero no es compatible con Android.

Desinfectante KernelAddress

KASan es la contraparte del kernel 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 pruebas.

Desinfectante de comportamiento indefinido (UBSan)

UBSan realiza instrumentación en tiempo de compilación para verificar varios tipos de comportamiento indefinido (sin seguridad de la memoria). Esto incluye la comprobación de desbordamiento de enteros con y sin signo (IntSan), comprobaciones de límites para matrices de tamaño estático (BoundsSan) y muchos otros tipos de comportamiento indefinido. IntSan y BoundsSan también son adecuados para habilitar en producción como mitigación de seguridad.