La seguridad de la memoria ha sido una prioridad importante para Google últimamente, ya que los errores de seguridad de la memoria tienden a ser algunos de los errores más graves en el desarrollo de software. De hecho, las vulnerabilidades de seguridad de la memoria solían ser la causa de la mayoría de las vulnerabilidades graves de Android hasta 2022, que es cuando Google escribió una parte importante del nuevo código nativo de Android en ellenguaje de programación Rusten lugar de C/C++. Google ha estado trabajando en respaldar otros medios para mitigar las vulnerabilidades de seguridad de la memoria en Android, uno de los cuales se llama etiquetado de memoria. En los dispositivos compatibles que ejecutanAndroid 14, puede haber una nueva configuración de "protección de memoria avanzada" que podría alternar esta función.

La extensión de etiquetado de memoria (MTE) es una característica de hardware obligatoria de las CPU Arm v9 que protege contra errores de seguridad de la memoria (con una ligera sobrecarga en el costo del rendimiento en tiempo de ejecución) al proporcionar información detallada sobre las violaciones de la memoria.Como explica Google, “en un nivel alto, MTE etiqueta cada asignación/desasignación de memoria con metadatos adicionales. Asigna una etiqueta a una ubicación de memoria, que luego se puede asociar con punteros que hacen referencia a esa ubicación de memoria. En tiempo de ejecución, la CPU verifica que el puntero y las etiquetas de metadatos coincidan en cada carga y almacenamiento”.

Google ha estado trabajando para admitir MTE en toda la pila de software de Android durante varias versiones. En Android 12, scudo, el asignador de montón de Android, agregó compatibilidad con tres modos operativos de MTE en dispositivos compatibles: modo sincrónico, modo asincrónico y modo asimétrico. Google también hizo posible habilitar MTE para procesos del sistema en el momento de la compilación o a través de propiedades del sistema o variables de entorno. Las aplicaciones pueden optar por admitir MTE a través del atributoandroid:memtagMode. Cuando MTE está habilitado para procesos en Android, clases enteras de errores de seguridad de memoria, como el uso después de la liberación y los desbordamientos de búfer, desencadenan un bloqueo en lugar de una corrupción de memoria silenciosa.

EnAndroid 13, Google agregó una ABI para el espacio de usuario para comunicar el modo operativo MTE solicitado al cargador de arranque. Esto podría usarse para habilitar MTE en dispositivos compatibles que no lo envían habilitado de manera predeterminada o, alternativamente, podría usarse para deshabilitarlo en dispositivos compatibles que sí lo tienen habilitado de manera predeterminada. Establecer la propiedad del sistema ro.arm64.memtag.bootctl_supported en "true" en Android 13 le indicaría al sistema que el cargador de arranque admite la ABI y también activaría un botón para que apareciera en el menú Opciones de desarrollador que permitiera al usuario habilitar MTE en el siguiente reinicio. Esto estaba dirigido a los desarrolladores que querían probar el comportamiento de sus aplicaciones con MTE habilitado.

Sin embargo, en Android 14, para habilitar MTE en dispositivos compatibles, es posible que ya no sea necesario ingresar a las Opciones de desarrollador. Si el dispositivo tiene una CPU Arm v8.5+ con soporte para MTE, la implementación del dispositivo admite la ABI para comunicar el modo operativo MTE solicitado al gestor de arranque y la nueva propiedad del sistema 'ro.arm64.memtag.bootctl_settings_toggle' está configurada como verdadera, es posible que aparezca una nueva página de "protección de memoria avanzada" en Configuración > Seguridad y privacidad > Más configuraciones de seguridad. Esta página también se puede iniciar a través de la nueva acción de intenciónACTION_ADVANCED_MEMORY_PROTECTION_SETTINGS.

Cabe destacar que el chipset Tensor G2 de la serieGoogle Pixel 7utiliza núcleos de CPU Arm v8.2, por lo que no es compatible con MTE. Si la próxima serie Google Pixel 8 utiliza nuevos núcleos de CPU Arm v9 como muchos otros dispositivos Android emblemáticos, entonces tendrían hardware capaz de soportar MTE. Sin embargo, queda por ver si esta función de "protección avanzada de la memoria" realmente llegará a la versión estable.

¡Gracias al investigador de seguridad@flawedworlddevpor su ayuda en este artículo!