Google adota Rust no firmware de banda base do Pixel 10
(security.googleblog.com)O Google introduziu um parser de DNS baseado em Rust, uma linguagem com segurança de memória, no firmware da banda base celular (modem) do Pixel 10.
Trata-se de uma medida preventiva para reduzir classes de vulnerabilidades de segurança de memória na banda base, que tem uma grande superfície de ataque remoto.
Pontos principais
- No Pixel 9, foram aplicadas medidas de mitigação para vulnerabilidades de segurança de memória, e no Pixel 10 a empresa foi além, inserindo código Rust no firmware real da banda base.
- O primeiro alvo da adoção foi o parser de DNS. O DNS é usado não só no navegador, mas também em funções básicas de telecomunicações móveis, como encaminhamento de chamadas, e por analisar diretamente dados não confiáveis, é uma área especialmente propensa a vulnerabilidades.
- O Google adotou a biblioteca open source de DNS em Rust
hickory-proto. A empresa avaliou positivamente seu estado de manutenção, cobertura de testes e adoção pela comunidade. - No entanto, como faltava suporte adequado a
no_std, necessário em ambientes bare-metal, o Google adicionou suporte ano_stddiretamente aos crates relacionados e às dependências, contribuindo com isso para o upstream. - O tamanho do código foi medido em cerca de 371KB. Desse total, 350KB são de
hickory-protoe dependências, 17KB decore·alloc·compiler_builtins, e 4KB de código shim que faz a ligação com o modem. - Em vez de usar o Cargo para combinar vários
staticlibindependentes, o Google optou por integrar diretamente a etapa de compilação Rust ao sistema de build existente do modem (Pigweed/GN). - O alocador de memória e o tratamento de panic do Rust também foram integrados via FFI ao allocator e ao crash backend do firmware existente do modem.
- Na etapa de linkedição,
compiler_builtinssobrescrevia as implementações otimizadas dememcpy/memsetjá existentes no modem, causando perda de desempenho; isso foi resolvido removendo-o com um script de uma linha. - O Google explicou que esta adoção não é uma medida pontual, mas a base para expandir o uso de linguagens com segurança de memória para outros parsers e códigos de alto risco dentro da banda base no futuro.
Por que isso importa
A banda base celular é um software de baixo nível diretamente exposto ao exterior, o que a torna um alvo valioso para ataques. No passado, o Project Zero chegou a demonstrar execução remota de código via internet em um modem Pixel. Nesse tipo de ambiente, problemas de segurança de memória em código centrado em C/C++ tendem a se tornar um risco estrutural.
O anúncio do Google é relevante não apenas por dizer “usamos Rust”, mas por mostrar, na prática, que linguagens com segurança de memória podem ser implantadas em áreas de firmware sensíveis e cheias de restrições, como a banda base móvel.
Pontos tecnicamente notáveis
- Foi adicionado suporte a
no_stdpara executarhickory-protoem bare-metal. - A interface entre Rust e o código C/C++ existente foi conectada via FFI.
- O parsing da resposta ficou a cargo do Rust, enquanto a atualização das estruturas de memória em C reutilizou callbacks de funções C já existentes.
- Como havia mais de 30 crates externos, em vez de regras de build escritas manualmente foi usado o
cargo-gnawdo Fuchsia para gerar regras de build GN.
Ainda não há comentários.