Configuración de MTE

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  | 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.