Os dados atualizados do Android para 2025 mostram que as vulnerabilidades de segurança da memória caíram para menos de 20% do total de vulnerabilidades pela primeira vez, em paralelo à expansão do uso do Rust nas partes novas e ativas da plataforma. Segundo uma análise publicada no Google Security Blog em 12 de novembro de 2025, o impacto da migração de C e C++ para Rust não se limita à redução dos riscos de segurança, mas também se estende à aceleração da revisão de código e à melhoria da estabilidade das alterações.
Os dados baseiam-se em alterações no código do Android, tanto desenvolvido diretamente pela Google quanto no código de código aberto mantido por terceiros, e abrangem as linguagens C, C++, Java, Kotlin e Rust. Como a análise foi publicada alguns meses antes do fim de 2025, a Google explicou que a janela padrão de correção de 90 dias torna os resultados muito próximos dos números finais, com a possibilidade de acelerar a correção quando necessário.
Mais segurança e entrega mais rápida
A Google introduziu o Rust no Android como uma alternativa direta ao C e ao C++ na programação de baixo nível, mantendo um nível semelhante de controle e previsibilidade, mas reduzindo significativamente os riscos relacionados à segurança da memória. A análise aponta para um forte aumento no volume de novo código Rust, em paralelo a uma queda mais lenta e contínua no novo código C++, até que o volume de Rust recém-adicionado se aproximou do volume de C++, permitindo comparações mais confiáveis entre os dois caminhos de desenvolvimento.
A Google utilizou o framework DORA para medir os aspectos de produtividade e estabilidade. Para reduzir as dificuldades de comparação entre as linguagens, concentrou-se em alterações de tamanho semelhante e em grupos semelhantes de desenvolvedores que trabalham na plataforma Android, além de acompanhar as tendências ao longo do tempo com o aumento da adoção do Rust.
Alterações em Rust de tamanho semelhante exigem cerca de 20% menos revisões do que as equivalentes em C++. Atualmente, elas também passam cerca de 25% menos tempo em revisão de código. A Google atribui, como hipótese e não como conclusão definitiva, a melhoria notável entre 2023 e 2024 ao aumento da experiência da equipe do Android com a linguagem Rust.
Quanto à estabilidade, as alterações médias e grandes em Rust registram uma taxa de reversão cerca de quatro vezes menor que a das alterações em C++. A Google confirma que a redução das reversões não reflete apenas a qualidade das alterações, mas também aumenta a produtividade, pois uma reversão pode levar a retrabalho, revisões adicionais, reconstruções, relatórios pós-incidente e interrupções para outras equipes.
Expansão do Rust para além dos serviços do sistema e das bibliotecas
A Google afirma que o suporte ao Rust amadureceu para a criação de serviços e bibliotecas do sistema Android e, por isso, está trabalhando para ampliar seu uso a outras camadas do ecossistema:
- Kernel: o kernel Linux 6.12 específico do Android é o primeiro kernel da Google com o suporte ao Rust ativado e também inclui o primeiro driver de Rust para produção. A Google continua colaborando com a Arm e a Collabora em um driver para uma unidade de processamento gráfico que funciona em modo kernel.
- Firmware: a Google considera que os níveis elevados de privilégio, as restrições de desempenho e a disponibilidade limitada de algumas medidas de proteção tornam o firmware de alto risco e difícil de proteger. A empresa afirma que utiliza Rust em firmware há anos e disponibilizou materiais de treinamento e código para a comunidade, com foco especial em sua colaboração com a Arm no Rusted Firmware-A.
- Aplicativos da Google: o protocolo Nearby Presence, usado para descobrir dispositivos locais por Bluetooth de forma segura e privada, é executado em Rust dentro do Google Play Services. O protocolo MLS para mensagens seguras via RCS também será incluído no aplicativo Google Messages em uma versão futura.
- Chromium: os analisadores de PNG e JSON e as fontes da web foram substituídos por implementações memory-safe escritas em Rust, facilitando para os engenheiros do Chromium o tratamento de dados provenientes da web seguindo a Rule of 2.
Uma vulnerabilidade que quase chegou aos usuários
Apesar do foco nas vantagens do Rust, a Google apresenta um caso que quase se tornou o primeiro registro de uma vulnerabilidade de segurança da memória baseada em Rust no Android. Foi detectado um estouro linear da capacidade do buffer no CrabbyAVIF antes que ele chegasse a uma versão pública, e a correção recebeu o identificador CVE-2025-48530 para garantir que tivesse alta prioridade e que sua chegada pelos canais de lançamento pudesse ser acompanhada.
A análise mostrou que o alocador de memória Scudo Hardened Allocator tornou a exploração da vulnerabilidade deterministicamente impossível, graças às páginas de proteção ao redor das alocações secundárias. O Scudo também transformou o estouro de uma corrupção silenciosa da memória em uma falha evidente, o que ajudou a detectar o problema. Por outro lado, o incidente revelou uma deficiência no sistema de comunicação de falhas, pois ele não esclarecia de forma suficiente que a falha era causada por um estouro, retardando a triagem e a resposta. A Google afirma que essa deficiência foi corrigida e que o sistema agora fornece um sinal claro quando ocorrem estouros nas páginas de proteção do Scudo.
Por que o Rust continua importante apesar da existência de unsafe?
A Google não considera que proibir código não seguro, seja em C, C++ ou Rust, seja uma solução prática para o desenvolvimento de sistemas operacionais, devido à necessidade de lidar com interfaces de programação de aplicativos e hardware. Por isso, está desenvolvendo um módulo avançado sobre código não seguro no treinamento Comprehensive Rust, para ensinar os desenvolvedores a avaliar a segurança desse código e o comportamento indefinido, usar comentários de segurança e encapsular as partes não seguras em abstrações seguras.
Com base em cerca de cinco milhões de linhas de Rust na plataforma Android e na existência de um único caso potencial tratado antes do lançamento, a Google estima a densidade de vulnerabilidades de segurança da memória em Rust em aproximadamente 0,2 vulnerabilidade por milhão de linhas. Ela compara esse número a uma densidade histórica de cerca de 1.000 vulnerabilidades por milhão de linhas em C e C++, o que, segundo sua estimativa, representa uma redução superior a 1.000 vezes. A empresa também observa que cerca de 4% do código é escrito dentro de blocos unsafe{}, mas afirma que presumir que cada linha não segura está exposta aos mesmos riscos existentes em C ou C++ superestima o risco, devido à continuidade da maioria das verificações do Rust, à possibilidade de encapsular o código não seguro e à sua submissão a uma auditoria adicional.
A Google conclui que a adoção do Rust muda a equação tradicional que associava a melhoria da segurança a custos adicionais em desempenho, processos ou velocidade de lançamento de recursos. Embora C e C++, assim como mecanismos de proteção de software e hardware, continuem importantes em uma defesa em camadas, a empresa considera que a migração para Rust oferece um caminho simultaneamente mais seguro e eficiente, em vez de acelerar primeiro e lidar com as consequências depois.