6 puntos por darjeeling 17 일 전 | Aún no hay comentarios. | Compartir por WhatsApp

Google introdujo en el firmware de banda base celular (módem) del Pixel 10 un parser de DNS basado en Rust, un lenguaje con seguridad de memoria.
Es una medida preventiva para reducir la familia de vulnerabilidades de seguridad de memoria en la banda base, cuya superficie de ataque remoto es amplia.

Puntos clave

  • En el Pixel 9 se aplicaron mitigaciones para vulnerabilidades de seguridad de memoria, y en el Pixel 10 se dio un paso más al incorporar código Rust directamente en el firmware de la banda base.
  • El primer objetivo de esta implementación es el parser de DNS. DNS se usa no solo en el navegador, sino también en funciones básicas de telecomunicaciones móviles como el desvío de llamadas, y al parsear directamente datos no confiables es un área propensa a vulnerabilidades.
  • Google adoptó la biblioteca open source de DNS para Rust hickory-proto. Valoró especialmente su estado de mantenimiento, cobertura de pruebas y nivel de adopción en la comunidad.
  • Sin embargo, faltaba soporte de no_std, necesario para entornos bare-metal, por lo que Google añadió directamente soporte de no_std a los crates relacionados y sus dependencias, y contribuyó esos cambios upstream.
  • El tamaño del código se midió en aproximadamente 371 KB. De eso, 350 KB corresponden a hickory-proto y sus dependencias, 17 KB a core, alloc y compiler_builtins, y 4 KB al código shim que conecta con el módem.
  • En lugar de usar Cargo para unir varios staticlib independientes, Google eligió integrar directamente la etapa de compilación de Rust en el sistema de build existente del módem (Pigweed/GN).
  • El asignador de memoria y el manejo de panic de Rust también se integraron conectándolos por FFI con el allocator y el backend de fallos del firmware existente del módem.
  • En la etapa de enlace, compiler_builtins sobrescribía las implementaciones optimizadas existentes de memcpy/memset del módem, lo que provocaba una caída de rendimiento; esto se resolvió eliminándolo con un script de una sola línea.
  • Google explicó que esta implementación no es una medida aislada, sino la base para ampliar en el futuro el uso de lenguajes con seguridad de memoria a otros parsers y código de alto riesgo dentro de la banda base.

Por qué importa

La banda base celular es software de bajo nivel que está expuesto directamente al exterior, por lo que tiene un alto valor como objetivo de ataque. De hecho, Project Zero ya demostró en el pasado ejecución remota de código a través de Internet en módems Pixel. En un entorno así, los problemas de seguridad de memoria del código centrado en C/C++ tienden a convertirse en un riesgo estructural.

El anuncio de Google es importante no solo porque “usó Rust”, sino porque muestra un caso real de despliegue de un lenguaje con seguridad de memoria incluso en un área de firmware tan restringida y sensible como la banda base móvil.

Aspectos técnicos destacados

  • Se añadió soporte de no_std para ejecutar hickory-proto en bare-metal.
  • La interfaz entre Rust y el código existente en C/C++ se conectó mediante FFI.
  • Rust se encarga del parseo de respuestas, mientras que la actualización de las estructuras de memoria existentes en C reutiliza callbacks de funciones C ya existentes.
  • Como había más de 30 crates externos, en lugar de reglas de build hechas a mano se utilizó cargo-gnaw de Fuchsia para generar reglas de build de GN.

Aún no hay comentarios.

Aún no hay comentarios.