Android proporciona un modelo de seguridad de varias capas que se describe en Descripción general de seguridad de Android . Cada actualización de Android incluye docenas de mejoras de seguridad para proteger a los usuarios. Las siguientes son algunas de las mejoras de seguridad introducidas en las versiones de Android 1.5 a 4.1:
- androide 1.5
- ProPolice para evitar desbordamientos del búfer de pila (-fstack-protector)
- safe_iop para reducir los desbordamientos de enteros
- Extensiones a OpenBSD dlmalloc para evitar vulnerabilidades de doble free() y para evitar ataques de consolidación de fragmentos. Los ataques de consolidación de fragmentos son una forma común de explotar la corrupción del montón.
- OpenBSD calloc para evitar desbordamientos de enteros durante la asignación de memoria
- androide 2.3
- Protecciones de vulnerabilidad de cadena de formato (-Wformat-security -Werror=format-security)
- No eXecute (NX) basado en hardware para evitar la ejecución de código en la pila y el montón
- Linux mmap_min_addr para mitigar la escalada de privilegios de desreferencia de puntero nulo (mejorado aún más en Android 4.1)
- Android 4.0
- Aleatorización del diseño del espacio de direcciones (ASLR) para aleatorizar ubicaciones clave en la memoria
- Android 4.1
- Compatibilidad con PIE (ejecutable independiente de la posición)
- Reubicaciones de solo lectura/enlace inmediato (-Wl,-z,relro -Wl,-z,now)
- dmesg_restrict habilitado (evite filtrar direcciones del kernel)
- kptr_restrict habilitado (evite filtrar direcciones del kernel)