- Desde la adopción de Rust en la plataforma Android, la proporción de vulnerabilidades de seguridad de memoria se redujo a menos del 20% del total, mejorando al mismo tiempo la seguridad y la eficiencia de desarrollo
- En comparación con C/C++, el código Rust muestra una densidad de vulnerabilidades de seguridad de memoria 1000 veces menor, una tasa de rollback 4 veces más baja y un tiempo de revisión de código 25% menor
- La expansión del uso de Rust se extiende a kernel, firmware y apps de 1st-party, contribuyendo a elevar el nivel base de seguridad en todo el sistema
- A través del caso de “casi ocurrencia” de la primera vulnerabilidad de seguridad de memoria basada en Rust detectada en CrabbyAVIF, se confirmó la importancia del asignador Scudo y de la capacitación para escribir código
unsafe de forma segura
- La transición hacia Rust se evalúa como un nuevo paradigma de desarrollo de software que logra al mismo tiempo mayor seguridad y mayor velocidad de desarrollo
Efectos de la adopción de Rust y datos de 2025
- En 2025, la proporción de vulnerabilidades de seguridad de memoria en Android cayó por debajo del 20%, lo que demuestra la efectividad de una estrategia de seguridad centrada en Rust
- Frente a C/C++, Rust registra una reducción de 1000 veces en la densidad de vulnerabilidades de seguridad de memoria, una tasa de rollback 4 veces menor y un tiempo de revisión de código 25% más corto
- La adopción de Rust no solo mejora la seguridad, sino que también aumenta la velocidad de entrega de software
- Los datos incluyen cambios de código 1st-party y 3rd-party en C, C++, Java, Kotlin y Rust dentro de la plataforma Android
Cambio de lenguaje de sistemas y productividad de desarrollo
- Android adoptó Rust como alternativa a C/C++ para programación de sistemas, ofreciendo un nivel de control similar pero con menos riesgos
- Tomando como base el código 1st-party, el crecimiento del código Rust ya superó al de C++, lo que permite comparar métricas de desarrollo entre ambos lenguajes
- Se utilizó el framework DORA para medir Throughput (velocidad de entrega) y Stability (estabilidad)
- La comparación se realizó controlando tamaño del código, grupo de desarrolladores y tendencias temporales entre Rust y C++
Throughput: mejora en la eficiencia de revisión de código
- El código Rust requiere 20% menos revisiones (revisions) que C++ y reduce en 25% el tiempo de revisión de código
- Entre 2023 y 2024, la mejora en la experiencia con Rust incrementó notablemente la eficiencia de revisión
- La reducción de revisión y retrabajo se traduce en mayor productividad, y la mejora en estabilidad actúa como el factor de impacto más importante
Stability: menos rollbacks y mayor calidad
- Según los criterios de DORA, la tasa de rollback de Rust es aproximadamente 4 veces menor que la de C++, especialmente en cambios medianos y grandes
- Una tasa de rollback baja contribuye directamente a la productividad al reducir costos secundarios como retrabajo de builds, postmortems y bloqueos de equipo
- En una encuesta a ingenieros de Google de 2022, Rust también fue valorado como más fácil de revisar y con mayor precisión
- Los datos respaldan empíricamente esa percepción
Mejora simultánea de seguridad y productividad
- En el pasado, reforzar la seguridad solía provocar caída de rendimiento o retrasos de desarrollo, pero la transición a Rust mejora al mismo tiempo seguridad y eficiencia
- Con la adopción de Rust, se consolida una estructura en la que seguridad, eficiencia de desarrollo y estabilidad del producto mejoran en conjunto
Áreas de expansión de Rust
- Kernel: Android 6.12 Linux kernel incorporó soporte para Rust y su primer driver en Rust
- En colaboración con Arm y Collabora, está en marcha el desarrollo de un driver de GPU basado en Rust
- Firmware: la adopción de Rust refuerza la seguridad en entornos restringidos y de altos privilegios, con tutoriales, capacitación y código publicado relacionados
- Avanza el proyecto Rusted Firmware-A en colaboración con Arm
- Apps de 1st-party:
- Nearby Presence: protocolo de descubrimiento de dispositivos basado en Bluetooth implementado en Rust y ejecutado en Google Play Services
- MLS: protocolo de seguridad para mensajería RCS implementado en Rust, con inclusión prevista en la app Google Messages
- Chromium: reemplazó parsers de PNG, JSON y fuentes web por Rust, facilitando el cumplimiento de la Rule of 2
Caso de “casi ocurrencia” de la primera vulnerabilidad de seguridad de memoria basada en Rust
- En CrabbyAVIF se detectó una vulnerabilidad de buffer overflow (CVE-2025-48530) justo antes del lanzamiento, y fue corregida antes de su divulgación
- El Scudo hardened allocator hizo que la vulnerabilidad fuera no explotable (non-exploitable) gracias a páginas de guarda
- Scudo ya se usa por defecto en Pixel y otros dispositivos, y también se está impulsando su obligatoriedad entre socios
- Las mejoras en crash reporting hicieron más clara la señal de detección de overflow
Gestión del código unsafe y refuerzo de la capacitación
- En el desarrollo de sistemas, inevitablemente se necesita código
unsafe (C/C++ o Rust unsafe)
- Google agregó un módulo avanzado sobre código
unsafe al curso Comprehensive Rust
- Se cubren la solidez (soundness) del código
unsafe, comportamiento no definido, anotaciones de seguridad y técnicas de abstracción segura
- Una mejor comprensión de Rust
unsafe se traduce en mejor calidad de código en Android y en todo el ecosistema open source
Comparación de densidad de vulnerabilidades
- En aproximadamente 5 millones de líneas de código Rust de Android se encontró 1 vulnerabilidad potencial → densidad de vulnerabilidades en Rust de 0.2/MLOC
- El promedio histórico de C/C++ fue de 1,000/MLOC, es decir, una reducción de más de 1000 veces
- La reducción en la densidad de vulnerabilidades de seguridad de memoria fortalece la efectividad de toda la arquitectura de seguridad
- Cerca del 4% del código Rust contiene bloques
unsafe{}, pero según los datos sigue teniendo menor probabilidad de errores que C/C++
- Entre las razones están la conservación de comprobaciones de seguridad, la encapsulación y revisiones adicionales más estrictas
Conclusión
- En el pasado, garantizar la seguridad requería respuestas costosas como análisis estático, sandboxing y parches
- La transición a Rust representa un nuevo enfoque que asegura al mismo tiempo seguridad y eficiencia
- Ya no se trata de “desarrollar rápido y arreglar después”, sino de entrar en una etapa de “desarrollar rápido mientras se arregla al mismo tiempo”
- Cuanto más se fortalece la seguridad, mayor es también la posibilidad de recuperar rendimiento y productividad
Agradecimientos
- Se menciona a numerosos colaboradores por el análisis de CVE-2025-48530, mejoras en Scudo, desarrollo de capacitación en Rust
unsafe y aporte de información sobre el uso de Rust
- Se expresa agradecimiento al equipo de Rust en Android y a toda la organización de Android por sus esfuerzos continuos para mejorar la calidad
3 comentarios
¡Larga vida a Rust!
Probé un poco el desarrollo de firmware con Embassy
La estabilidad del lenguaje es buena, pero... como las herramientas son tan buenas, la productividad es abrumadoramente superior en comparación con cuando usaba C/C++.
Comentarios en Hacker News
En 5 millones de líneas de código Rust se encontró una sola vulnerabilidad de seguridad de memoria
Es decir, Rust muestra una tasa de 0.2 vulnerabilidades por millón de líneas
En cambio, C/C++ ronda las 1,000 por millón de líneas, así que la diferencia es abrumadora
Pero cuesta entender por qué siguen ignorándolo frente a datos tan claros
Yo mismo todavía no he usado Rust, pero algún día sin duda quiero aprenderlo
La seguridad importa, pero desplegar sin rollbacks es lo que de verdad quieren los desarrolladores
Escribir en Rust da esa sensación de estabilidad
Innovaciones así en ciencias de la computación de verdad aparecen muy rara vez
En 2025 casi no hay razón para usar C++ aparte de mantener codebases existentes
Todo lo nuevo debería hacerse en Rust
Los proyectos nuevos arrancan con sistemas de pruebas modernos y objetivos claros
Aun así, no se puede negar que Rust es un lenguaje más sano mentalmente que C++
Aprender Rust fue realmente doloroso, mucho más complejo que otros lenguajes
Pero después de pelearte unas cuantas veces con el compilador, te queda la certeza de que cuando el código corre casi no habrá problemas
Después de usar Ruby, JS/TS y Python, llegar a Rust se siente como “si compila, ya está 80~90% terminado”
Y además es rápido
Ese proceso de pelear con el compilador en realidad es corregir por adelantado bugs que estaban escondidos
La forma de pensar de Rust termina dominando tu cabeza
Es una broma sobre lo fácil que es olvidarlo y volver a aprenderlo
Estoy de acuerdo con Ruby, JS y Python, pero TS me parece un caso un poco distinto
Google todavía no da soporte oficial a Rust en el userspace de Android
El NDK y Android Studio siguen soportando solo C/C++
Si quieres usar Rust, la comunidad tiene que crear sus propias herramientas
Es difícil crear apps sin código del lado de la JVM
El ABI de Android funciona igual sin importar el lenguaje, siempre que se respeten las reglas
Esto es como una bomba que hundió a C++
Ahora será más difícil justificarlo con excusas como “Rust también tiene unsafe” o “C++ también es seguro si se usa bien”
Escribir código seguro es tedioso, pero una vez que lo logras, hasta en entornos multihilo te da confianza
También me gustaría hacer apps de Android en Rust
Solo me alegra que ahora haya más opciones para crear herramientas de sistema seguras
Los estándares de la industria siguen girando alrededor de C/C++, así que es difícil que Rust los reemplace por completo
Es impactante que la tasa de rollbacks tenga una diferencia de 4 veces
La mayoría de las cifras ya eran una realidad esperable, pero esto sí se siente nuevo
No tanto porque Rust sea perfectamente especial, sino porque significa que el código existente tiene muchísimos bugs
Es impresionante que hayan salido datos así de una codebase a gran escala
Si desde el principio armas un sistema de pruebas de aceptación a nivel de módulo, puedes sustituir con pruebas parte de lo que Rust valida
No solo podrías vigilar fugas de memoria, sino también degradaciones de rendimiento
también podría ser simplemente una diferencia en el riesgo del código antiguo
A un amigo le tocó un proyecto de reescritura en Rust,
y bromeó con que “con esto ya tiene asegurado el sueldo de tres años”
Es una estrategia en broma de reescritura → seguridad de memoria → salario estable
Mientras el compilador de Rust compila lentamente, puede leer el código viejo y trabajar con calma
Estos datos no controlaron las variables de confusión
Normalmente, lo que se reescribe es código que ya se entiende bien, así que se revisa más rápido y tiene menos rollbacks
En cambio, el código legacy complejo tarda más en revisión y genera más rollbacks
Si solo se hubieran reescrito las partes fáciles, la tasa de vulnerabilidades de seguridad de memoria habría salido distinta
De hecho, mientras más problemático es el código, más tiende a reescribirse en Rust
No es un experimento perfecto, pero es más razonable verlo como un efecto real
Sería aún más interesante analizar la escala de la reescritura según la cantidad de líneas eliminadas
más bien se vuelve un entorno más fácil de reescribir
Creo en las ventajas de Rust, pero esto lo veo más como evidencia empírica fuerte que como prueba científica
Me da curiosidad cómo afectará la adopción de Rust a los bugs no relacionados con seguridad de memoria
Yo uso Rust para desarrollo de videojuegos (no Bevy)
Por su estabilidad y rendimiento, no pienso volver a otros lenguajes
Me da curiosidad qué combinación de crates y qué arquitectura usas
Yo también hago juegos como hobby y Bevy me pareció un poco excesivo
Siento que Rust ya quedó suficientemente establecido incluso en código crítico de sistema
Ya no es una uphill battle
“Reescríbanlo en Rust” ya no es un meme: cada vez hay más evidencia real detrás
el 80% de los comentarios siguen siendo de haters de Rust
No repiten más que lo mismo de siempre: “C++ también es seguro si se usa bien”, “Rust también tiene bugs”
Es una crítica ignorante, pero a estas alturas ya no da risa, da pena
Pero querer aplicarlo en todos lados ya es exagerado
El modelo de ownership de Rust ralentiza la velocidad de desarrollo, y el lenguaje en sí todavía sigue evolucionando
Si se trata de servicios con mucha latencia de red, Python o Node pueden ser más eficientes
En otras palabras, Rust es excelente, pero no es la respuesta para todos los problemas