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 que fue 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:

HWAddress Sanitizer (HWASan)

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

  • Desbordamiento o subdesbordamiento del búfer 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 direcciones (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 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.

Desinfectante de comportamiento indefinido (UBSan)

UBSan realiza instrumentación en tiempo de compilación para verificar varios tipos de comportamiento indefinido (no relacionado con la 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 una mitigación de seguridad.