Por que usar o AVF?

Os dispositivos de computação móvel estão processando quantidades cada vez maiores de dados pessoais sensíveis. A presença desses dados sensíveis, auxiliada pela conexão constante com o mundo externo, resultou em maiores investimentos de agentes maliciosos interessados em explorar vulnerabilidades para atingir seus objetivos.

Os sistemas operacionais, com a ajuda de unidades de gerenciamento de memória (MMUs, na sigla em inglês) de hardware, fornecem abstrações que isolam processos não relacionados uns dos outros. Somente os componentes que fazem parte da base de computação confiável (TCB, na sigla em inglês) podem programar essas MMUs diretamente.

Esse modelo é a base de como a privacidade e a segurança são implementadas desde a introdução de sistemas operacionais semelhantes ao Unix. No entanto, esse requisito se tornou problemático porque a TCB atual é muito grande: ela inclui a maioria dos drivers de dispositivo e barramento, programadores complexos, sistemas de arquivos, pilha e protocolos de rede, caches, analisadores e carregadores executáveis e soquetes. É muito difícil garantir que todos os cantos desse sistema complicado sejam seguros.

O kernel do Linux tem mais de 20 milhões de linhas de código, e a taxa de mudanças e reescritas é surpreendente. Esse crescimento é uma grande ajuda para o Android e nosso ecossistema. No entanto, a grande TCB dificulta a garantia da ausência de vulnerabilidades exploráveis.

Os fornecedores de hardware desenvolveram soluções, como o TrustZone da Arm, que permitem que os processadores sejam executados no modo seguro e marquem as transações de memória como "seguras" ou "não seguras". Nesses sistemas, os dados sensíveis são armazenados e ficam disponíveis diretamente apenas para o mundo seguro, que fornece serviços ao mundo não seguro sob demanda.

A principal limitação desses tipos de soluções é que os domínios são muito amplos: apenas seguros e não seguros. À medida que mais casos de uso que exigem isolamento do sistema operacional são introduzidos, a superfície de ataque aumenta, e as vulnerabilidades provavelmente levam à violação de todo o dispositivo.

Outra limitação das soluções atuais é que elas são projetadas para um mundo relativamente estático em que todos os recursos de caso de uso são contabilizados e alocados com antecedência. Essas soluções não são boas o suficiente para casos de uso dinâmicos em que os recursos são alocados sob demanda.

Além disso, as APIs usadas fora do sistema operacional Android são fragmentadas e restringem nossa capacidade de implantar casos de uso na escala do Android, incluindo fundamentos como Keymint e Gatekeeper.

Para resolver essas limitações e permitir que o Android forneça uma base robusta para casos de uso de próxima geração, o Android 13 introduz a virtualização segura como o Framework de virtualização do Android (AVF, na sigla em inglês).

O principal objetivo do AVF é fornecer um ambiente de execução seguro e particular para casos de uso de próxima geração.