Alrededor del 21% del nuevo código compilado en Android 13 está escrito en Rust

Los ingenieros de Google resumieron los primeros resultados de la introducción del soporte para el desarrollo en lenguaje Rust en la plataforma Android. En Android 13, aproximadamente el 21 % del nuevo código compilado agregado está escrito en Rust y el 79 % en C/C++. El repositorio AOSP (Android Open Source Project), que desarrolla el código fuente de la plataforma Android, contiene aproximadamente 1.5 millones de líneas de código Rust asociadas con componentes nuevos como el almacén de claves criptográficas Keystore2, una pila para chips UWB (banda ultra ancha) , implementación del protocolo DNS-over-HTTP3, el marco de virtualización AVF (Android Virtualization Framework), pilas experimentales para Bluetooth y Wi-Fi.

Alrededor del 21% del nuevo código compilado en Android 13 está escrito en Rust

De acuerdo con la estrategia adoptada anteriormente de reducir el riesgo de vulnerabilidades causadas por errores al trabajar con la memoria, el lenguaje Rust se utiliza actualmente principalmente para desarrollar código nuevo y para fortalecer gradualmente la seguridad de los componentes de software más vulnerables y vitales. No existe un objetivo general de transferir toda la plataforma a Rust y el código antiguo permanece en C/C++, y la lucha contra los errores en el mismo se lleva a cabo mediante el uso de pruebas de fuzzing, análisis estático y el uso en el desarrollo de técnicas similares a usando el tipo MiraclePtr (vinculación sobre punteros sin formato, realizando comprobaciones adicionales para acceder a áreas de memoria liberadas), el sistema de asignación de memoria Scudo (un reemplazo seguro de malloc/free) y mecanismos de detección de errores cuando se trabaja con memoria HWAsan (AddressSanitizer asistido por hardware), GWP-ASAN y KFENCE.

En cuanto a las estadísticas sobre la naturaleza de las vulnerabilidades en la plataforma Android, se observa que a medida que disminuye el código nuevo que funciona de manera insegura con la memoria, también disminuye el número de vulnerabilidades causadas por errores al trabajar con la memoria. Por ejemplo, la proporción de vulnerabilidades causadas por problemas de memoria disminuyó del 76% en 2019 al 35% en 2022. En números absolutos, se identificaron 2019 vulnerabilidades relacionadas con la memoria en 223, 2020 en 150, 2021 en 100 y 2022 en 85 (todas las vulnerabilidades notadas estaban en código C/C++; en el código Rust, hasta ahora no hay problemas similares). encontró). 2022 fue el primer año en el que las vulnerabilidades relacionadas con la memoria dejaron de dominar.

Alrededor del 21% del nuevo código compilado en Android 13 está escrito en Rust

Dado que las vulnerabilidades relacionadas con la memoria suelen ser las más peligrosas, las estadísticas generales también muestran una disminución en la cantidad de problemas críticos y problemas que pueden explotarse de forma remota. Al mismo tiempo, la dinámica de identificación de vulnerabilidades no relacionadas con el trabajo con la memoria se ha mantenido aproximadamente en el mismo nivel durante los últimos 4 años: 20 vulnerabilidades por mes. La proporción de problemas peligrosos entre las vulnerabilidades causadas por errores al trabajar con la memoria también permanece (pero a medida que disminuye el número de tales vulnerabilidades, también disminuye el número de problemas peligrosos).

Alrededor del 21% del nuevo código compilado en Android 13 está escrito en Rust

Las estadísticas también rastrean la correlación entre la cantidad de código nuevo que funciona de manera insegura con la memoria y la cantidad de vulnerabilidades relacionadas con la memoria (desbordamientos de búfer, acceso a memoria ya liberada, etc.). Esta observación confirma la suposición de que el enfoque al implementar técnicas de programación segura debe ser eliminar código nuevo en lugar de reescribir el código existente, ya que la mayor parte de las vulnerabilidades identificadas se encuentran en código nuevo.

Alrededor del 21% del nuevo código compilado en Android 13 está escrito en Rust


Fuente: opennet.ru

Añadir un comentario