Introdução ao Gerenciamento de Memória no Rust
Rust não possui um coletor de lixo lento. Ao invés disso, utiliza um mecanismo conhecido como "borrow checker", que garante a segurança da memória em tempo de compilação. Este conjunto rigoroso de regras assegura que não seja possível "esquecer" de liberar memória — o código simplesmente não compilará se as regras relacionadas à memória forem violadas. Isso é o que torna Rust uma linguagem que oferece segurança em relação à memória.
Desafios na Atualização de Firmware de Modem
No entanto, nem mesmo uma gigante como o Google pode simplesmente alterar como o firmware de modem é escrito. A questão envolve dezenas de megabytes de código de máquina executável, o que representa uma quantidade considerável. Não apenas seria uma tarefa hercúlea atualizar décadas de trabalho, mas muitas das empresas envolvidas também consideram o funcionamento interno dos modems como segredos comerciais.
Foco da Google na Segurança do Modem do Pixel
Para proteger o modem do Pixel contra ataques de zero-day, o Google concentrou seus esforços no parser DNS. À medida que as funcionalidades celulares migraram para redes de dados, o DNS se tornou uma parte central do funcionamento dos telefones. A Google explica que o DNS requer a análise de dados não confiáveis, o que representa uma grande preocupação de segurança, mas que pode ser resolvida com o uso do Rust.
Escolha da Biblioteca Rust para DNS
O Google optou pela biblioteca de DNS Rust de código aberto chamada hickory-proto, que não é particularmente otimizada, mas possui ampla adoção e suporte. O modem presente nos telefones Pixel não opera em um ambiente com restrição de memória, o que permitiu à equipe adicionar um componente em Rust para tornar o DNS no código existente mais seguro. A equipe removeu as dependências da biblioteca padrão, permitindo que o código fosse compilado em código de máquina para uma operação mais rápida, que foi então incorporada ao código existing C/C++ do modem. No total, os componentes em Rust adicionaram 371KB, uma quantidade viável para o modem do Pixel.
Sistema de Segurança do Modem
Sob esse sistema, qualquer tentativa de explorar uma vulnerabilidade manipulando a memória esbarra na barreira imposta pelo Rust — ele não pode ser impactado por pacotes DNS maliciosos. Os telefones Pixel 10 foram os primeiros a serem lançados com essa implementação mais segura do modem. A Google espera que esse trabalho permita que outras plataformas façam melhorias semelhantes, mas a empresa observa que o tamanho da biblioteca Rust escolhida pode ser um problema para sistemas embarcados mais simples. É possível que isso seja abordado tornando a biblioteca mais modular no futuro. A Google também visualiza esse trabalho como uma base para integrar mais componentes seguros em relação à memória na baseband celular ao longo do tempo.
