Por que usar o AVF?

Os dispositivos móveis de computação estão lidando com quantidades cada vez maiores de dados pessoais sensíveis. A presença desses dados sensíveis, aliada à conexão constante com o mundo exterior, resultou em investimentos maiores de usuários maliciosos interessados em explorar vulnerabilidades para alcançar os objetivos deles.

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

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 o TCB de hoje é muito grande: ele inclui a maioria dos drivers de dispositivo e barramento, schedulers complexos, sistemas de arquivos, pilha e protocolos de rede, caches, analisadores e carregadores executáveis e sockets. É muito difícil garantir que todos os cantos desse sistema complicado estejam 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, o 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 apenas diretamente para o mundo seguro, que fornece serviços ao mundo não seguro sob demanda.

A principal limitação desse tipo de solução é que os domínios são muito granulares: apenas seguro e não seguro. À 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 à invasã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 adequadas 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 lidar com essas limitações e permitir que o Android ofereça uma base robusta para casos de uso de próxima geração, o Android 13 apresenta a virtualização segura como o Android Virtualization Framework (AVF).

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