Quase um quarto do Android 13 é escrito em Rust, diz o Google

Segundo informações do engenheiros do Google, quase um quarto do Android 13 é escrito em Rust, uma linguagem segura para a memória.

Por meio de uma postagem no blog, os engenheiros do Google divulgaram o resumo dos primeiros resultados da introdução do suporte ao desenvolvedor Rust no Android.

Com isso, o Android 13 é a primeira versão do Android em que a maior parte do novo código adicionado à versão está em uma linguagem segura para a memória.

Quase um quarto do Android 13 é escrito em Rust, diz o Google

Quase um quarto do Android 13 é escrito em Rust, diz o Google
Quase um quarto do Android 13 é escrito em Rust, diz o Google

No Android 13, cerca de 21% do novo código compilado adicionado é escrito em Rust e 79% em C/C++, sendo o repositório AOSP (Android Open Source Project), que desenvolve o código-fonte para a plataforma Android, que possui aproximadamente 1,5 milhões de linhas de código Rust.

O código fornecido pelo AOSP está relacionado a novos componentes, como o armazenamento de chaves criptográficas Keystore2, a pilha para chips UWB (Ultra-Wideband), implementação do protocolo DNS sobre HTTP3, framework de virtualização AVF (Android Virtualization Framework), pilhas experimentais para Bluetooth e Wi-Fi.

Alinhado com a estratégia adotada anteriormente para reduzir o risco de vulnerabilidades de bugs de memória, até agora o Rust tem sido usado principalmente para o desenvolvimento de novos códigos e para fortalecer gradualmente a segurança dos componentes de software mais vulneráveis ​​e vitais.

“Como o número de novos códigos inseguros de memória inseridos no Android diminuiu, o número de vulnerabilidades de segurança de memória também diminuiu. De 2019 a 2022, caiu de 76% para 35% do total de vulnerabilidades do Android. 2022 marca o primeiro ano em que as vulnerabilidades de segurança de memória não representam a maioria das vulnerabilidades do Android.”

O objetivo geral de portar toda a plataforma para Rust não está definido e o código antigo permanece em C/C++, e o combate aos erros nele é feito por meio do uso de testes de fuzzing, análise estática e uso de técnicas semelhantes ao uso do tipo MiraclePtr (binding over raw pointers, que realiza verificações adicionais para acesso a áreas de memória liberadas), o Sistema de alocação de memória Scudo (um substituto seguro para malloc/free) e mecanismos de detecção de erros ao trabalhar com memória HWAsan (Hardware Assisted AddressSanitizer), GWP-ASAN e KFENCE.

Observando as estatísticas sobre a natureza das vulnerabilidades na plataforma Android, observa-se que, à medida que diminui a quantidade de novos códigos que funcionam com a memória de maneiras inseguras, também diminui o número de vulnerabilidades causadas por erros ao trabalhar com memória.

Por exemplo, a proporção de vulnerabilidades causadas por problemas de memória diminuiu de 76% em 2019 para 35% em 2022.

Em números absolutos, 223 vulnerabilidades relacionadas à memória foram identificadas em 2019, 150 em 2020, 100 em 2021 e 85 em 2022 não foram encontradas). 2022 foi o primeiro ano em que as vulnerabilidades relacionadas à memória deixaram de dominar.

“Até o momento, nenhuma vulnerabilidade de segurança de memória foi descoberta no código Android Rust.”

“Não esperamos que esse número fique em zero para sempre, mas dado o volume do novo código Rust em duas versões do Android e os componentes sensíveis à segurança onde é usado, é um resultado significativo. Isso mostra que o Rust está cumprindo seu objetivo de prevenir a fonte mais comum de vulnerabilidades do Android.”

Como as vulnerabilidades relacionadas à memória costumam ser as mais perigosas, as estatísticas gerais também mostram uma diminuição no número de problemas críticos e problemas que podem ser explorados remotamente.

Quase um quarto do Android 13 é escrito em Rust, diz o Google
Quase um quarto do Android 13 é escrito em Rust, diz o Google

Ao mesmo tempo, a dinâmica de detecção de vulnerabilidades não relacionadas ao trabalho com memória está aproximadamente no mesmo nível nos últimos 4 anos – 20 vulnerabilidades por mês.

A proporção de problemas perigosos para vulnerabilidades causadas por erros de memória também é a mesma (mas conforme o número de vulnerabilidades diminui, o número de problemas perigosos também diminui).

As estatísticas também rastreiam a correlação entre a quantidade de novos códigos que funcionam com a memória de maneira insegura e o número de vulnerabilidades relacionadas à memória (estouros de buffer, acesso à memória já liberada, etc.).

Esta observação confirma a suposição de que a atenção principal na implementação de técnicas de programação segura deve ser dada ao novo código e não à reescrita do código existente, uma vez que a maioria das vulnerabilidades identificadas está no novo código.

Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.