O Google integra código escrito na linguagem de programação Rust em seu sistema operacional Android desde 2019. E todo esse esforço parece que valeu a pena. O Google diz que linguagem de programação Rust protege mais o Android contra falhas.
Bugs de segurança de memória – como leitura e gravação fora dos limites ou uso após livre – representam mais de 65% das vulnerabilidades de bugs de gravidade alta ou crítica no Chrome e no Android, e os números são semelhantes em software de outros fornecedores. Essas falhas degradam a segurança e aumentam o custo de desenvolvimento de software quando não detectadas com antecedência.
Mas depois de quatro anos em que o Android coletou pedaços de Rust, esse número diminuiu.
“De 2019 a 2022, o número anual de vulnerabilidades de segurança de memória caiu de 223 para 85”, disse o engenheiro de segurança do Android Jeffrey Vander Stoep em um post de blog.
Vander Stoep diz que o declínio coincide com os esforços para se afastar das linguagens de programação inseguras de memória, com o que ele quer dizer C/C++ – uma linguagem que não garante a segurança da memória, mas pode suportá-la.
Google diz que linguagem de programação Rust protege mais o Android
A partir do Android 12 no ano passado, o Rust tornou-se uma linguagem da plataforma Android. E agora no Android 13, diz Vander Stoep, a maioria do novo código adicionado à versão foi escrita em uma linguagem segura para a memória – Rust, Java ou Kotlin.
Com menos códigos inseguros de memória entrando no Android, as falhas de segurança de memória passaram de 76% das vulnerabilidades do Android em 2019 para 35% em 2022 – o primeiro ano em que os bugs de segurança de memória não representam a maioria das vulnerabilidades.
Outras vulnerabilidades permaneceram constantes ao longo do tempo, aparecendo a uma taxa de cerca de 20 por mês nos últimos quatro anos. Como as falhas de segurança de memória foram responsáveis pela maioria dos problemas críticos, as vulnerabilidades que surgiram provaram ser menos graves.
O Google não é a única grande empresa de tecnologia a reconhecer os benefícios do código seguro de memória. A Meta expressou seu apreço por Rust. Vários meses atrás, o CTO da Microsoft, Mark Russinovich, declarou que o C/C++ não deveria mais ser usado para iniciar novos projetos e que o Rust deveria ser implantado onde uma linguagem sem coleta de lixo é necessária.
Na época, Bjarne Stroustrup, criador do C++, desafiou a orientação de Russinovich apontando que a segurança de tipo e memória pode ser obtida no padrão ISO C++, reforçada por uma análise estática. Na visão de Stroustrup, ajudar o C++ a evoluir faz mais sentido do que depreciar a linguagem e deixar códigos inseguros abandonados.
Investimentos continuam
O Google, diz Vander Stoep, continua a investir em ferramentas para escrever código C/C++ mais seguro, apontando para o alocador reforçado Scudo, HWASAN, GWP-ASAN e KFENCE em dispositivos Android. E ele diz que o Google aumentou o uso de fuzzing. Mas, embora essas medidas tenham contribuído para o declínio dos bugs de segurança de memória, ele argumenta que a maior parte da redução da vulnerabilidade deve ser atribuída à transição para linguagens seguras de memória.
No Android 13, cerca de 21% do novo código nativo é escrito em Rust. Isso inclui cerca de 1,5 milhão de linhas de código Rust no Android Open Source Project (AOSP), consistindo em componentes como Keystore2, a nova pilha de banda ultralarga (UWB) e DNS sobre HTTP3 que em anos anteriores teriam sido escritos em C++.
E até agora, Rust entregou. “Até o momento, nenhuma vulnerabilidade de segurança de memória foi descoberta no código Rust do Android”, disse Vander Stoep, que sabiamente admitiu que provavelmente não será o caso para sempre.
“A combinação de velocidade e segurança de memória do Rust o torna uma ótima escolha para uma ampla gama de projetos”, disse Rebecca Rumbul, diretora executiva e CEO da Rust Foundation, em um e-mail ao The Register . “Não é nenhuma surpresa ver Rust sendo cada vez mais integrado a projetos e produtos existentes, e o recente blog do Google discutindo Rust no Android realmente destaca seus benefícios de segurança.”
Rumbul acrescentou:
“Esses benefícios de segurança também estão sendo reconhecidos por formuladores de políticas em todo o mundo, com governos na Europa e na América do Norte reconhecendo o Rust como uma solução para alguns dos problemas de segurança enfrentados no passado”.
A Agência de Segurança Nacional dos EUA observou recentemente que, embora linguagens como C++ possam fornecer muita flexibilidade, elas dependem do programador para fornecer as verificações de referência de memória necessárias.
“Ferramentas de análise de software podem detectar muitos casos de problemas de gerenciamento de memória e as opções do ambiente operacional também podem fornecer alguma proteção, mas as proteções inerentes oferecidas por linguagens de software seguras para memória podem prevenir ou mitigar a maioria dos problemas de gerenciamento de memória”, disse a agência em orientação publicada mês passado. “A NSA recomenda usar uma linguagem segura para a memória quando possível.”