- Na plataforma Android, após a adoção de Rust, a proporção de vulnerabilidades de segurança de memória caiu para menos de 20% do total, melhorando ao mesmo tempo a segurança e a eficiência de desenvolvimento
- Em comparação com C/C++, o código Rust tem densidade de vulnerabilidades de segurança de memória 1000 vezes menor, taxa de rollback 4 vezes menor e tempo de revisão de código 25% mais curto
- A expansão do uso de Rust se estende para kernel, firmware e apps 1st-party, contribuindo para elevar o nível básico de segurança de todo o sistema
- Com o primeiro caso de "quase ocorrência" de uma vulnerabilidade de segurança de memória baseada em Rust encontrado no CrabbyAVIF, foi confirmada a importância do alocador Scudo e do treinamento para escrever código
unsafe com segurança
- A migração para Rust é avaliada como um novo paradigma de desenvolvimento de software que alcança simultaneamente reforço de segurança e aumento da velocidade de desenvolvimento
Efeitos da adoção de Rust e os dados de 2025
- Em 2025, a proporção de vulnerabilidades de segurança de memória no Android caiu para menos de 20%, comprovando a eficácia de uma estratégia de segurança centrada em Rust
- Em comparação com C/C++, Rust apresenta redução de 1000 vezes na densidade de vulnerabilidades de segurança de memória, taxa de rollback 4 vezes menor e tempo de revisão de código 25% mais curto
- A adoção de Rust vai além de uma simples melhoria de segurança e leva a maior velocidade de entrega de software
- Os dados incluem alterações de código 1st-party e 3rd-party em C, C++, Java, Kotlin e Rust dentro da plataforma Android
Transição de linguagem de sistemas e produtividade de desenvolvimento
- O Android adotou Rust como alternativa a C/C++ para programação de sistemas, oferecendo nível semelhante de controle enquanto reduz riscos
- Com base no código 1st-party, o crescimento do código Rust ultrapassou o de C++, tornando possível comparar métricas de desenvolvimento entre as duas linguagens
- O framework DORA foi usado para medir Throughput (velocidade de entrega) e Stability (estabilidade)
- A comparação foi feita controlando tamanho do código, pool de desenvolvedores e tendências de tempo entre Rust e C++
Throughput: melhora na eficiência da revisão de código
- Em comparação com C++, o código Rust exige 20% menos revisões (revisions) e reduz o tempo de revisão de código em 25%
- Entre 2023 e 2024, a eficiência das revisões melhorou bastante com o aumento da especialização em Rust
- A redução de revisões e retrabalho leva ao aumento de produtividade, e a melhora da estabilidade atua como o principal fator desse efeito
Stability: redução da taxa de rollback e melhora de qualidade
- Pelos critérios do DORA, a taxa de rollback de Rust é cerca de 4 vezes menor que a de C++, com destaque em mudanças de médio e grande porte
- A baixa taxa de rollback contribui diretamente para a produtividade, reduzindo custos indiretos como retrabalho de build, postmortems e bloqueios de equipe
- Em uma pesquisa com engenheiros do Google em 2022, Rust também foi avaliada como mais fácil de revisar e com maior precisão
- Os dados sustentam empiricamente essa percepção
Melhora simultânea de segurança e produtividade
- No passado, reforçar a segurança causava queda de desempenho ou atrasos no desenvolvimento, mas a migração para Rust melhora ao mesmo tempo segurança e eficiência
- Com a adoção de Rust, forma-se uma estrutura em que segurança, eficiência de desenvolvimento e estabilidade do produto melhoram juntas
Áreas de expansão do Rust
- Kernel: suporte a Rust e introdução do primeiro driver em Rust no kernel Linux do Android 6.12
- Em colaboração com Arm e Collabora, está em andamento o desenvolvimento de um driver de GPU baseado em Rust
- Firmware: a adoção de Rust reforça a segurança em ambientes de alta permissão e com restrições, com tutoriais, treinamento e código relacionados sendo disponibilizados
- Está em andamento o projeto Rusted Firmware-A, em colaboração com a Arm
- Apps 1st-party:
- Nearby Presence: protocolo de descoberta de dispositivos baseado em Bluetooth implementado em Rust, executado no Google Play Services
- MLS: protocolo de segurança para mensagens RCS implementado em Rust, com inclusão futura prevista no app Google Messages
- Chromium: parsers de PNG, JSON e fontes web substituídos por Rust, facilitando o cumprimento da Rule of 2
Primeiro caso de "quase ocorrência" de vulnerabilidade de segurança de memória baseada em Rust
- No CrabbyAVIF, uma vulnerabilidade de buffer overflow (CVE-2025-48530) foi encontrada pouco antes do lançamento e corrigida antes da divulgação
- O Scudo hardened allocator tornou a vulnerabilidade não explorável (non-exploitable) graças às guard pages
- O Scudo já é usado por padrão em dispositivos como o Pixel, e sua adoção obrigatória também está sendo promovida entre parceiros
- Melhorias no crash reporting tornaram mais claros os sinais de detecção de overflow
Fortalecimento da gestão de código unsafe e do treinamento
- No desenvolvimento de sistemas, é inevitável usar código unsafe (C/C++ ou
unsafe Rust)
- O Google adicionou um módulo avançado sobre código unsafe ao curso Comprehensive Rust
- O conteúdo aborda soundness de código unsafe, comportamento indefinido, anotações de segurança e técnicas de abstração segura
- Melhorar a compreensão de
unsafe Rust leva a ganhos de qualidade de código em todo o ecossistema Android e open source
Comparação de densidade de vulnerabilidades
- Entre cerca de 5 milhões de linhas de código Rust no Android, foi encontrada 1 vulnerabilidade potencial → densidade de vulnerabilidades em Rust de 0,2/MLOC
- A média histórica de C/C++ é de 1.000/MLOC, ou seja, uma redução de mais de 1000 vezes
- A redução da densidade de vulnerabilidades de segurança de memória leva a maior efetividade de toda a arquitetura de segurança
- Cerca de 4% do código Rust usa blocos
unsafe{}, mas os dados mostram menor probabilidade de bugs do que em C/C++
- Entre os motivos estão manutenção de verificações de segurança, encapsulamento e reforço de revisão adicional
Conclusão
- No passado, para garantir segurança, eram necessárias respostas de alto custo como análise estática, sandboxing e patches
- A migração para Rust é uma nova abordagem que garante ao mesmo tempo segurança e eficiência
- Agora, em vez de “desenvolver rápido e corrigir depois”, entrou-se na fase de “desenvolver rápido corrigindo ao mesmo tempo”
- Quanto mais a segurança é reforçada, maior também pode ser a recuperação de desempenho e produtividade
Agradecimentos
- São mencionados vários colaboradores por contribuições como análise do CVE-2025-48530, melhorias no Scudo, desenvolvimento de treinamento em
unsafe Rust e compartilhamento de informações sobre o uso de Rust
- Agradecimento aos esforços contínuos de melhoria de qualidade da equipe de Rust do Android e de toda a organização Android
3 comentários
Viva Rust!
Depois de mexer um pouco com desenvolvimento de firmware usando Embassy,
A segurança da linguagem é boa, mas... como o tooling é excelente, a produtividade é esmagadoramente superior em comparação com quando eu usava C/C++.
Comentários no Hacker News
Em 5 milhões de linhas de código Rust, foi encontrada apenas uma única vulnerabilidade de segurança de memória
Ou seja, o Rust mostrou uma taxa de 0,2 vulnerabilidade por milhão de linhas
Já C/C++ fica na casa de 1.000 por milhão de linhas, então a diferença é esmagadora
Mas é difícil entender por que isso ainda é ignorado diante de dados tão claros
Eu mesmo ainda não usei Rust, mas pretendo aprender algum dia
Segurança é importante, mas deploy sem rollback é o que desenvolvedor realmente quer
Escrever em Rust passa essa sensação de estabilidade
Inovações assim em ciência da computação são realmente raras
Em 2025, quase não existe motivo para usar C++ além de manter codebases já existentes
Tudo o que for novo deveria ir para Rust
Projetos novos começam com estruturas de teste modernas e objetivos claros
Mesmo assim, é difícil negar que Rust é uma linguagem mais saudável mentalmente do que C++
Aprender Rust foi realmente doloroso, muito mais complexo do que outras linguagens
Mas depois de brigar com o compilador algumas vezes, surge a confiança de que, quando o código roda, quase não há problema
Saindo de Ruby, JS/TS e Python para Rust, dá a sensação de que “se compilou, está 80~90% pronto”
E ainda por cima é rápido
O processo de lutar com o compilador é, na verdade, o processo de corrigir bugs escondidos antes
A forma de pensar do Rust começa a dominar sua cabeça
A piada é que é uma linguagem fácil de esquecer e fácil de reaprender
Concordo com Ruby, JS e Python, mas acho TS um pouco diferente
O Google ainda não oferece suporte oficial ao Rust no userspace do Android
O NDK e o Android Studio ainda dão suporte apenas a C/C++
Para usar Rust, a comunidade precisa criar as próprias ferramentas
Está difícil fazer apps sem código do lado da JVM
.soem Rust e colocá-los no NDKA ABI do Android funciona independentemente da linguagem, desde que as regras sejam seguidas
Isso parece um bombardeio que afundou o C++
Agora fica difícil sustentar desculpas como “Rust também é unsafe” ou “C++ também é seguro se bem usado”
Escrever código seguro dá trabalho, mas, depois que passa, você ganha confiança até em ambientes multithread
Eu gostaria de fazer apps Android em Rust também
Só fico feliz por existirem mais opções para criar ferramentas de sistema seguras
O padrão da indústria ainda gira em torno de C/C++, então Rust dificilmente vai substituir tudo por completo
É chocante ver uma diferença de 4 vezes na taxa de rollback
A maior parte dos números já era algo esperado, mas isso é novidade
Não significa necessariamente que Rust seja perfeito, e sim que o código existente tem bugs nessa proporção
É impressionante ver esse tipo de dado vindo de uma codebase grande
Se desde o começo houvesse um sistema de testes de aceitação por módulo, parte da verificação que o Rust faz poderia ser substituída por testes
Seria possível monitorar não só vazamentos de memória, mas também degradação de desempenho
isso pode ser simplesmente uma diferença de risco entre código velho e novo
Um amigo ficou responsável por um projeto de reescrita em Rust e brincou:
“com isso, meu salário está garantido por 3 anos”
É uma estratégia em tom de piada de reescrita → segurança de memória → ciclo estável de salário
Enquanto o compilador do Rust compila lentamente, dá para trabalhar com calma lendo o código antigo
Esses dados não controlaram variáveis de confusão
Normalmente, o alvo de uma reescrita já é um código bem compreendido, então a review é mais rápida e há menos rollback
Já código legado complexo tende a ter review mais longa e mais rollback
Se apenas código fácil tivesse sido reescrito, a taxa de vulnerabilidades de segurança de memória teria saído diferente
Na prática, quanto mais problemático o código, maior a tendência de reescrevê-lo em Rust
Não é um experimento perfeito, mas faz mais sentido interpretar como efeito real
Seria ainda mais interessante analisar a escala da reescrita com base no volume de linhas removidas
mais ele pode acabar sendo um ambiente mais fácil de reescrever
Eu acredito nas vantagens do Rust, mas vejo isso mais como evidência empírica forte do que como prova científica
Fico curioso sobre como a adoção do Rust vai impactar também os bugs que não são de segurança de memória
Eu uso Rust em desenvolvimento de jogos (não com Bevy)
Por causa da estabilidade e da taxa de processamento, não penso em voltar para outra linguagem
Fico curioso sobre que combinação de crates e arquitetura você usa
Eu também faço jogos como hobby e senti que Bevy era um pouco exagerado
Agora sinto que o Rust já se firmou o suficiente até em código central de sistemas
Já não é mais uma batalha ingrata
“Reescreva em Rust” está deixando de ser meme e passando a ter base real
80% dos comentários ainda são de haters de Rust
São sempre os mesmos argumentos repetidos, como “C++ também é seguro se bem usado” ou “Rust também tem bugs”
É uma crítica desinformada, e agora dá mais tristeza do que risada
Mas querer aplicar isso a tudo já seria exagero
O modelo de ownership do Rust desacelera o desenvolvimento, e a própria linguagem ainda está evoluindo
Se for um serviço com alta latência de rede, Python ou Node podem ser mais eficientes
Ou seja, Rust é excelente, mas não é a resposta para todos os problemas