6 pontos por darjeeling 17 일 전 | Ainda não há comentários. | Compartilhar no WhatsApp

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 a no_std diretamente 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-proto e dependências, 17KB de core·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 staticlib independentes, 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_builtins sobrescrevia as implementações otimizadas de memcpy/memset já 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_std para executar hickory-proto em 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-gnaw do Fuchsia para gerar regras de build GN.

Ainda não há comentários.

Ainda não há comentários.