7 pontos por GN⁺ 2025-11-15 | 3 comentários | Compartilhar no WhatsApp
  • 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

 
brain1401 2025-11-16

Viva Rust!

 
bus710 2025-11-16

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++.

 
GN⁺ 2025-11-15
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

    • Ainda existem lugares na internet onde basta mencionar “vamos reescrever em Rust” para chover crítica
      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
    • Pessoalmente, o que mais me chamou atenção neste texto foi a parte de “code review fica mais fácil e há menos rollbacks”
      Segurança é importante, mas deploy sem rollback é o que desenvolvedor realmente quer
      Escrever em Rust passa essa sensação de estabilidade
    • Rust é um verdadeiro avanço de engenharia
      Inovações assim em ciência da computação são realmente raras
    • Se essa estatística for real, vejo um futuro sombrio para C++
      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
    • Ainda assim, isso compara código novo vs. código antigo, então não é totalmente justo
      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 que eu mais gosto no Rust é pegar erros de runtime em tempo de compilação
      O processo de lutar com o compilador é, na verdade, o processo de corrigir bugs escondidos antes
    • A partir de certo momento, você para de brigar com o compilador e passa a colaborar com ele
      A forma de pensar do Rust começa a dominar sua cabeça
    • Rust é fácil de aprender? Eu mesmo já aprendi de novo umas 4 ou 5 vezes
      A piada é que é uma linguagem fácil de esquecer e fácil de reaprender
    • Fico curioso se você realmente não sentiu essa mesma segurança no TypeScript
      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

    • Na prática, o Google vem caminhando para eliminar aos poucos o próprio NDK
      Está difícil fazer apps sem código do lado da JVM
    • Mesmo assim, ainda é possível compilar arquivos .so em Rust e colocá-los no NDK
      A 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”

    • A vantagem do Rust não é só segurança, mas também cargo, sintaxe e gerenciamento de módulos como um todo
      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
    • Não tenho interesse em guerra de linguagens
      Só fico feliz por existirem mais opções para criar ferramentas de sistema seguras
    • No fim das contas, o compilador Rust também fica em cima de LLVM e GCC
      O padrão da indústria ainda gira em torno de C/C++, então Rust dificilmente vai substituir tudo por completo
    • No fim, a adequação do Rust depende do tipo de software
  • É 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

    • Todo mundo já sabia que Rust era seguro, mas uma diferença de 1000 vezes surpreende
      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
    • A maioria das codebases tem deficiência em planejamento inicial de testes
      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
    • Se o código novo foi mantido em Rust e o antigo em C++,
      isso pode ser simplesmente uma diferença de risco entre código velho e novo
    • É interessante que a taxa de rollback tenha se mantido estável apesar da diferença de tamanho do código
  • 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

    • Mas o primeiro gráfico não pode ser explicado só por isso
      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
    • Este texto fala principalmente sobre escrever código novo
    • Tentaram reduzir a confusão comparando por tamanho de mudança (S/M/L)
      Seria ainda mais interessante analisar a escala da reescrita com base no volume de linhas removidas
    • Quanto mais complexo o projeto e maior a cobertura de testes,
      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

    • Interessante ver alguém fazendo jogo em Rust sem Bevy
      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

    • Se você ler os textos sobre Rust no Phoronix,
      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
    • Essa abordagem não é “reescrever código existente”, e sim a estratégia de escrever código novo em Rust
    • Rust se encaixa perfeitamente em ambientes como o Android, onde kernel e software são gerenciados diretamente
      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