La empresa Google ha evaluado el uso de componentes en lenguaje Rust en la plataforma Android. La estrategia para implementar métodos de desarrollo seguros para el nuevo código en Android ha sido exitosa. En 2025, por primera vez, la proporción de vulnerabilidades causadas por errores de manejo de memoria fue inferior al 20% del total de vulnerabilidades. Para comparación, en 2024 este indicador en Android era del 24%, mientras que en 2019 alcanzó el 76%. A su vez, la media de la industria sigue manteniéndose alrededor del 70%.

El uso de código en Rust para el desarrollo de componentes del sistema Android comenzó en 2020. En 2025, el volumen de nuevo código en Rust en Android superó la cantidad de código agregado anualmente en C y C++.

Las estadísticas acumuladas confirman la suposición previamente expresada de que la principal fuente de problemas de seguridad es el nuevo código, mientras que el código antiguo muestra una dependencia exponencial de la seguridad en el tiempo: con el tiempo, los errores en el código antiguo se identifican cada vez con menos frecuencia. En última instancia, Google decidió no intentar reescribir el código antiguo en lenguajes que gestionan la memoria de manera segura, sino centrarse en utilizar tales lenguajes para el nuevo código.
Además de la seguridad, la implementación de Rust ha tenido un impacto positivo en la velocidad, productividad y calidad del desarrollo. Para el código en Rust se ha registrado cuatro veces menos reversiones de cambios debido a errores inesperados, así como una reducción del 25% en el tiempo de revisión.


Al incorporar cambios de tamaño comparable en Android, los cambios en Rust requieren aproximadamente un 20% menos de revisiones que sus equivalentes en C++.

Estos indicadores se explican por la simplificación de las pruebas y el adelantamiento de la detección de errores a las primeras etapas del desarrollo, donde los errores se vuelven evidentes antes de que el desarrollador comience a revisar el código. Además, al eliminar los costos de aislamiento del sandbox en el código en Rust, se logró mejorar el rendimiento.
En proyectos recientes relacionados con el uso de Rust en Android, se ha destacado la implementación en el núcleo de Linux 6.12 del primer controlador ampliamente utilizado en Rust, así como su uso en el desarrollo de firmware y aplicaciones. Además del controlador ya implementado en el núcleo, se está desarrollando un nuevo controlador GPU en colaboración con ARM y Collabora. También se ha implementado en Rust el protocolo Nearby Presence, utilizado en Google Play Services para detectar dispositivos locales a través de Bluetooth. Se planea incluir en la próxima versión de la aplicación Google Messages una nueva implementación del protocolo MLS, escrita en Rust. En el motor del navegador Chromium, se han utilizado analizadores escritos en Rust para fuentes web, imágenes PNG y el formato JSON.
Actualmente, en Android se han escrito aproximadamente 5 millones de líneas de código en Rust, de las cuales solo se ha identificado una vulnerabilidad potencial, relacionada con problemas de manejo de memoria. Así, la densidad de estas vulnerabilidades en el código de Rust es de 0.2 vulnerabilidades por millón de líneas de código. En comparación, en código de lenguajes C y C++, este indicador es de aproximadamente 1000 vulnerabilidades por millón de líneas de código. La principal fuente de problemas en Rust son los bloques unsafe. Se estima que esta porción de código representa el 4% del total del código escrito en Rust.
La vulnerabilidad mencionada CVE-2025-48530 se encontró en la biblioteca Crabby Avif, que incluye un analizador y decodificador para el formato Avif. El problema fue detectado por empleados de Google antes de la publicación de la versión y no afectó a los usuarios. La vulnerabilidad fue causada por un error en un bloque unsafe, que resultó en un desbordamiento de búfer. Se señala que incluso si el error no se hubiera detectado, su explotación habría sido bloqueada por el sistema de distribución de memoria Scudo, que se incluye de manera predeterminada en los firmware de Google Pixel y algunos otros dispositivos.
Fuente: opennet.ru
