Configuração da MTE

A MTE pode ser ativada de forma independente no kernel do Android e em qualquer no sistema Android. O Google não exige nenhuma configuração e visa fornecer flexibilidade máxima ao dispositivo de sites.

Este documento descreve as configurações e o escopo da MTE que, na nossa opinião, oferece um bom equilíbrio entre segurança e custo para o Android usuários como mitigação de vulnerabilidade sempre ativada.

Kernel

A MTE no kernel é configurada pela linha de comando. A por padrão é ATIVADO no modo de sincronização. Isso está sujeito a mudanças futuras para por vários motivos:

  • Isso afeta significativamente a performance e as necessidades o trabalho de otimização.
  • A qualidade do código do kernel é amplamente percebida como insuficiente para enviar MTE no modo de aplicação (ou seja, pânico em caso de falha).

A recomendação atual é desativar a MTE do kernel no dispositivos de produção. Para fazer isso, adicione kasan=off ao linha de comando do kernel.

Espaço do usuário

O Google fornece uma lista padrão de binários do espaço do usuário a serem protegidos com a MTE. A lista foi composta com a entrada da equipe de segurança e inclui componentes privilegiados e/ou que lidam com dados de entrada. A lista atualizada de binários nativos recomendados com a MTE podem ser encontradas as memtag-common.mk (link em inglês) no build do Android sistema. Além disso, várias apps do sistema também estão incluídos: atualmente, Nfc, Bluetooth e SecureElement. Esses binários e apps são ativada no modo assíncrono por padrão.

A recomendação atual é usar a lista de destino padrão. (nenhuma alteração necessária). Além disso, é recomendável avaliar Adições de BSP e OEM ao sistema principal e permitem a MTE que exigem segurança.

Apps

Os três aplicativos do sistema listados acima são os únicos que usam MTE no momento. Para que um app de terceiros ative MTE, o AndroidManifest.xml precisaria especificar android:memtagMode com um valor diferente de off. Assim, conjuntos comuns de parâmetros de comparação, O Geekbench ou o AnTuTu não funcionam com a MTE. Se a MTE do kernel também for desativado (veja o kasan=off acima), os comparativos de mercado serão o impacto no desempenho é muito limitado.

Quanto aos outros apps, há um desenvolvimento ativo de suporte à MTE na Chrome. A versão atual do Chrome na Play Store inclui memtagMode=async no manifesto. Também é nossa expectativa de que diversos apps voltados à segurança no ecossistema Android (por exemplo, apps bancários) fariam o mesmo. No(s) dia(s) por outro lado, alguns aplicativos que exigem pico da CPU como jogos, manterão a MTE desativada.

Outros modos

As instruções acima usam apenas o modo MTE assíncrono em todos os lugares. Dependendo do hardware, outros modos podem ser quase, ou com a mesma velocidade. Eles também oferecem diagnósticos e diagnósticos propriedades de mitigação de vulnerabilidades mais eficientes.

Recomendamos testar uma ou duas outras configurações são suficientes para seus requisitos de desempenho/energia. Modos da MTE podem ser definidas para cada núcleo da CPU no sistema, gravando no /sys/devices/system/cpu/cpu*/mte_tcf_preferred: Por exemplo, escrever sync (ou asymm) causaria qualquer processo do espaço do usuário solicitado Modo assíncrono para fazer upgrade automático de forma silenciosa para sincronização (ou Asymm) enquanto em execução nesse núcleo. Essa configuração pode ser feita em um arquivo .rc no dispositivo o tempo de inicialização.

Recomendamos medir uma ou duas outras configurações para verificar se atendem aos seus requisitos de desempenho e energia. Algumas configurações interessantes a serem exploradas:

  • Asymm em todos os núcleos.
  • Asymm em núcleos grandes e Sync em outros núcleos.
.

Para verificar se um processo está solicitando o modo assíncrono (com possíveis upgrade automático), verifique se a linha a seguir inclui PR_MTE_TCF_SYNC e PR_MTE_TCF_ASYNC:

  debuggerd  | head -30 | grep tagged_addr

Infelizmente, não há uma maneira fácil de ver o modo eficaz de uma processo mas qualquer processo que mostre os dois valores listados acima sujeito ao comportamento de upgrade automático.