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 del búfer y usos después de la liberación con una sobrecarga de rendimiento insignificante. 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.
Depuración del código nativo de 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
Android 12 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.
De esta manera, se habilita un mecanismo de detección de errores en el kernel que tiene un impacto mínimo en la experiencia del usuario.
Para obtener más información sobre KFENCE, consulta la documentación disponible en https://www.kernel.org.