Rust está incluído entre as principais linguagens para desenvolvimento da plataforma Android

O Google anunciou a inclusão da linguagem de programação Rust entre as linguagens permitidas para o desenvolvimento da plataforma Android. O compilador da linguagem Rust foi incluído na árvore de origem do Android em 2019, mas o suporte para essa linguagem permaneceu experimental. Alguns dos primeiros componentes Rust planejados para Android incluem novas implementações do mecanismo de comunicação entre processos Binder e da pilha Bluetooth.

A introdução do Rust foi realizada como parte de um projeto para fortalecer a segurança, promover técnicas de programação seguras e aumentar a eficiência na identificação de problemas ao trabalhar com memória no Android. Observa-se que cerca de 70% de todas as vulnerabilidades perigosas identificadas no Android são causadas por erros ao trabalhar com memória. O uso do Rust, que se concentra na segurança da memória e no gerenciamento automático da memória, reduzirá o risco de vulnerabilidades causadas por erros de memória, como acesso pós-liberação e saturação de buffer.

Rust reforça a segurança da memória em tempo de compilação por meio de verificação de referência, propriedade de objetos e rastreamento de vida útil do objeto (escopos) e avaliando a correção dos acessos à memória em tempo de execução. Rust também fornece proteção contra overflows de inteiros, requer que valores de variáveis ​​sejam inicializados antes do uso, tem melhor tratamento de erros na biblioteca padrão, usa o conceito de referências e variáveis ​​imutáveis ​​por padrão e oferece tipagem estática forte para minimizar erros lógicos.

No Android, a segurança da memória é fornecida nas linguagens Kotlin e Java já suportadas, mas elas não são adequadas para o desenvolvimento de componentes do sistema devido à alta sobrecarga. Rust permite atingir desempenho próximo às linguagens C e C++, o que permite sua utilização para desenvolvimento de partes de baixo nível da plataforma e componentes para interação com hardware.

Para garantir a segurança do código C e C++, o Android usa isolamento de sandbox, análise estática e testes de difusão. As capacidades de isolamento de sandbox são limitadas e atingiram o limite de suas capacidades (uma maior fragmentação em processos é impraticável do ponto de vista do consumo de recursos). As limitações do uso do sandbox incluem grandes custos indiretos e aumento do consumo de memória causado pela necessidade de gerar novos processos, bem como atrasos adicionais associados ao uso do IPC.

Ao mesmo tempo, o sandbox não elimina vulnerabilidades no código, mas apenas reduz riscos e complica o ataque, uma vez que a exploração requer a identificação não de uma, mas de várias vulnerabilidades. Os métodos baseados em testes de código são limitados, pois para identificar erros é necessário criar condições para que o problema se manifeste. Não é possível cobrir todas as opções possíveis, por isso muitos erros passam despercebidos.

Para processos de sistema no Android, o Google adere à "regra de dois", segundo a qual qualquer código adicionado deve atender a no máximo duas das três condições: trabalhar com dados de entrada não validados, usar uma linguagem de programação insegura (C/C++) e executando sem isolamento estrito de sandbox (com privilégios elevados). Esta regra implica que o código para processamento de dados externos deve ser reduzido a privilégios mínimos (isolado) ou escrito em uma linguagem de programação segura.

O Google não pretende reescrever o código C/C++ existente em Rust, mas planeja usar essa linguagem para desenvolver novo código. Faz sentido usar Rust para código novo porque, estatisticamente, a maioria dos bugs aparece em código novo ou alterado recentemente. Em particular, cerca de 50% dos erros de memória detectados no Android são detectados em código escrito há menos de um ano.

Rust está incluído entre as principais linguagens para desenvolvimento da plataforma Android


Fonte: opennet.ru

Adicionar um comentário