MTE puede habilitarse de manera independiente en el kernel de Android y en cualquier en el sistema Android. Google no exige ningún tipo de del dispositivo y tiene como objetivo proporcionar la máxima flexibilidad al dispositivo compiladores.
Este documento describe la configuración de MTE y el alcance que, en nuestra opinión, proporciona una buena compensación entre seguridad y costo para Android y a los usuarios como mitigación de vulnerabilidades siempre activa.
Kernel
La MTE en el kernel se configura mediante la línea de comandos. El la opción predeterminada está ACTIVADA en el modo de sincronización. Esto está sujeto a cambios futuros por varias razones:
- Se ha demostrado que afecta significativamente el rendimiento y las necesidades y optimizar el trabajo de optimización.
- La calidad del código del kernel suele ser insuficiente para el envío. MTE en modo de aplicación forzosa (es decir, en caso de pánico en caso de error).
La recomendación actual es inhabilitar la MTE del kernel en
dispositivos de producción. Para ello, agrega kasan=off
a la
de la línea de comandos de kernel.
Espacio del usuario
Google proporciona una lista predeterminada de los objetos binarios del espacio de usuario que se protegerán con MTE. La lista se redactó con la entrada de la seguridad de Android que incluye componentes con privilegios o que administran datos no confiables de datos. La lista actualizada de objetos binarios nativos que se recomiendan con MTE se encuentran en el memtag-common.mk en la compilación de Android en un sistema de archivos. Además: varios apps del sistema también se incluyen: actualmente, NFC, Bluetooth y SecureElement. Estos objetos binarios y apps son habilitado en el modo asíncrono de forma predeterminada.
Por el momento, se recomienda usar la lista de destinos predeterminados. (no se requieren cambios). Además, se recomienda evaluar Adiciones de BSP y OEM al sistema principal y habilitación de MTE en estos sensibles desde el punto de vista de la seguridad.
Apps
Las tres apps del sistema que se mencionaron anteriormente son las únicas que usan
MTE en este momento. Para que una aplicación de terceros habilite
MTE, su AndroidManifest.xml
deberá especificar
android:memtagMode
con otro valor
que off
. Por lo tanto, los conjuntos de comparativas comunes,
Geekbench o AnTuTu no se ejecutan con MTE. Si la MTE de kernel también es
inhabilitado (consulta kasan=off
más arriba), entonces las comparativas son
Se espera que muestre un impacto muy limitado en el rendimiento, si corresponde.
En cuanto a las demás aplicaciones, existe un desarrollo activo de la compatibilidad con MTE en
Chrome. La versión actual de Play Store de Chrome incluye
memtagMode=async
en el manifiesto. También es nuestra expectativa
que varias apps que se preocupan por la seguridad en el ecosistema de Android
(por ejemplo, apps bancarias) harían lo mismo eventualmente. En la
Por otro lado, esperamos que algunas apps
que requieran uso máximo de CPU
de rendimiento, como en los juegos, elegirá mantener MTE inhabilitada.
Otros medios de transporte
Las instrucciones anteriores usan solo el modo MTE asíncrono. en todas partes. Según el hardware, otros modos pueden ser casi con la misma rapidez. También proporcionan mejores diagnósticos y, propiedades de mitigación de vulnerabilidades.
Te recomendamos que pruebes una o dos configuraciones más para ver si
sean suficientes para sus requisitos
de rendimiento o energía. Modos de MTE
se puede establecer para cada núcleo de CPU en el sistema escribiendo a
/sys/devices/system/cpu/cpu*/mte_tcf_preferred
Por ejemplo, escribir
sync
(o asymm
) generaría cualquier proceso de espacio del usuario que haya solicitado
El modo asíncrono se actualizará automáticamente a Sincronizar (o Asimm) y
que se ejecuta en ese núcleo. Esta configuración se puede realizar en un archivo .rc en el dispositivo.
tiempo de inicio.
Recomendamos medir una o dos configuraciones más para verificar si que satisfagan tus requisitos de rendimiento y alimentación. Algunos parámetros de configuración interesantes para explorar:
- Asymm en todos los núcleos.
- Asymm en núcleos grandes y sincronización en otros núcleos.
Para verificar que un proceso esté solicitando el modo asíncrono (con posibles actualización automática), verifica que la siguiente línea incluya tanto PR_MTE_TCF_SYNC y PR_MTE_TCF_ASYNC:
debuggerd <PID> | head -30 | grep tagged_addr
Lamentablemente, no existe una manera fácil de ver el modo efectivo de una proceso; pero cualquier proceso que muestre los dos valores enumerados anteriormente es sujeto al comportamiento de actualización automática.