GWP-ASan y KFENCE son herramientas de detección de memoria probabilística para el espacio del usuario y el kernel, respectivamente. Cuando se habilita, una pequeña cantidad de asignaciones se protege con páginas de memoria adicionales que rodean la memoria asignada. Esto permite detectar desbordamientos de búfer y uso después de liberar con una sobrecarga de rendimiento negligible. Incluso con una tasa de muestreo pequeña para las asignaciones protegidas, cuando se implementan a gran escala, pueden detectar errores de seguridad de la memoria de manera eficaz. Desde su introducción, estas herramientas ayudaron a identificar numerosos errores de la plataforma y demostraron ser una herramienta valiosa para mejorar la estabilidad y la seguridad. Recomendamos a los proveedores que los habiliten y supervisen de cerca los errores detectados en los dispositivos de los usuarios finales.
Los desarrolladores deben verificar la presencia de fallas. Para ello, deben consultar /data/tombstones
, logcat
o supervisar la canalización DropboxManager
del proveedor en busca de errores del usuario final.
Para obtener más información, consulta nuestra documentación sobre la depuración de código nativo de Android.
Cómo depurar código nativo en la plataforma de AndroidGWP-ASan para detectar errores de seguridad de la memoria del espacio de usuario
GWP-ASan se introdujo en Android 11 para las asignaciones de montón del espacio de usuario. Cuando GWP-ASan detecta un error, registra un informe de fallas con Cause: [GWP-ASan]:
y finaliza el proceso. Los informes de errores
contienen información adicional de asignación y desasignación que facilita
la identificación de la causa raíz.
GWP-ASan se habilita de forma aleatoria, durante el inicio, para el 1% de los procesos o apps del sistema y para las aplicaciones que establecen android:gwpAsanMode
en su archivo AndroidManifest.xml
.
KFENCE para detectar errores de seguridad de la memoria del kernel
En Android 12, se introdujo KFENCE para las asignaciones de montón del kernel. Cuando KFENCE detecta un error, registra un informe de falla que comienza con BUG: KFENCE,
, inhabilita las páginas de protección y continúa la ejecución.
Esto habilita un mecanismo de detección de errores del kernel que afecta mínimamente la experiencia del usuario.
Para obtener más información sobre KFENCE, consulta la documentación disponible en https://www.kernel.org.