LinuxParty
Parece que el cambio de Google de C y C++ al lenguaje de programación seguro para la memoria Rust está dando sus frutos.
La decisión de Google de utilizar Rust para el nuevo código en Android con el fin de reducir los fallos relacionados con la memoria parece estar dando sus frutos. Las vulnerabilidades de seguridad de la memoria en Android se han reducido a más de la mitad, un hito que coincide con el cambio de Google de C y C++ al lenguaje de programación seguro para la memoria, Rust.
Este es el primer año en que las vulnerabilidades de seguridad de la memoria no son la categoría más grande de fallas de seguridad, y se produce un año después de que Google hiciera de Rust el valor predeterminado para el nuevo código en el Proyecto de código abierto de Android (AOSP).
Otros lenguajes seguros para la memoria que Google ha utilizado para Android incluyen Java y Kotlin compatible con Java. C y C++ siguen siendo lenguajes dominantes en AOSP, pero Android 13 es la primera versión en la que la mayor parte del código nuevo proviene de lenguajes seguros para la memoria. Después de que Google lo adoptara para AOSP en abril de 2021, Rust ahora representa aproximadamente el 21% del código nuevo. El proyecto del kernel de Linux de este año adoptó Rust como el nuevo segundo lenguaje oficial después de C.
La versión 10 de Android de 2019 tenía 223 errores de seguridad de la memoria, mientras que Android 13 tiene 85 problemas de seguridad de la memoria conocidos.
Durante ese período, las vulnerabilidades de seguridad de la memoria han caído del 76% al 35% del total de vulnerabilidades de Android, señala el ingeniero de software de seguridad de Android Jeffrey Vander Stoep. Con esta caída en las vulnerabilidades de seguridad de la memoria, Google también está viendo una disminución en las fallas críticas y explotables de forma remota.
Vander Stoep señala que este cambio no fue impulsado por "heroísmos", sino simplemente por desarrolladores que utilizaron las mejores herramientas para el trabajo. El equipo de Android planea aumentar el uso de Rust, aunque no hay planes de deshacerse de C y C++ para la programación de sus sistemas.
"Si tuviera que identificar una única característica que hace esto posible, diría 'humildad'. Hay una voluntad en todos los niveles del equipo de Android de decir '¿Cómo podemos hacerlo mejor?' junto con la fortaleza para seguir adelante y hacer cambios, incluidos cambios sistémicos", señaló en un tweet .
"Sin embargo, la humildad debe ir en ambos sentidos. Rust no resuelve todos los problemas, y hay áreas en las que C/C++ seguirá siendo la opción más práctica para el desarrollo, al menos por un tiempo. Eso está bien.
"Trabajaremos para reducir eso con el tiempo mientras continuamos aumentando nuestro uso de Rust y continuamos invirtiendo e implementando mejoras en C/C++".
La correlación no equivale a la causalidad, señala Vander Stoep, pero el porcentaje de errores de seguridad de la memoria, que dominan los errores de alta gravedad, coincide estrechamente con los lenguajes utilizados para el código nuevo.
Las herramientas de seguridad como el fuzzing también han tenido un gran impacto en los errores de seguridad de la memoria, afirma Google.
"Seguimos invirtiendo en herramientas para mejorar la seguridad de nuestro C/C++. En las últimas versiones, hemos introducido el asignador reforzado Scudo, HWASAN, GWP-ASAN y KFENCE en dispositivos Android de producción. También hemos aumentado nuestra cobertura difusa en nuestra base de código existente. Las vulnerabilidades encontradas usando estas herramientas contribuyeron tanto a la prevención de vulnerabilidades en el código nuevo como a las vulnerabilidades encontradas en el código antiguo que se incluyen en la evaluación anterior. Estas son herramientas importantes y de importancia crítica para nuestro C/ Código C++. Sin embargo, estos por sí solos no explican el gran cambio en las vulnerabilidades que estamos viendo, y otros proyectos que han implementado estas tecnologías no han visto un cambio importante en su composición de vulnerabilidades.Creemos que el cambio continuo de Android desde lenguajes no seguros para la memoria a lenguajes seguros para la memoria es un factor importante", escribe Vander Stoep.
Continúa señalando que en Android 13 hay 1,5 millones de líneas totales de código Rust, lo que representa aproximadamente el 21% de todo el código nuevo. Hasta la fecha, Google no ha visto ni una sola vulnerabilidad de seguridad de la memoria en el código Rust de Android.
"Demuestra que Rust está cumpliendo su propósito de prevenir la fuente de vulnerabilidades más común de Android. La densidad de vulnerabilidad histórica es mayor que 1/kLOC (1 vulnerabilidad por cada mil líneas de código) en muchos de los componentes C/C++ de Android (por ejemplo, medios, Bluetooth , NFC, etc.) En base a esta densidad histórica de vulnerabilidades, es probable que el uso de Rust ya haya impedido que cientos de vulnerabilidades lleguen a producción", señala Vander Stoep.
Sin embargo, para Android, Google está implementando capas de abstracción de hardware (HAL) del espacio de usuario en Rust y agregando soporte para Rust en aplicaciones confiables. También ha migrado el firmware de la máquina virtual en Android Virtualization Framework a Rust. Y con la compatibilidad con Rust en la versión 6.1 del kernel de Linux, Google está brindando seguridad de memoria al kernel, comenzando con los controladores del kernel.
-
Artículos
- ¿Podría una pareja repoblar la tierra?
- El avión de Hidrógeno supersónico español que cambiará el futuro de la aviación
- Las herramientas imprescindibles de Linux según la comunidad de Reddit
- El motor H2 Starfire: la alternativa al coche eléctrico con cero emisiones y alta eficiencia
- Ozmo: ¿El fin de los limpiavidrios o una nueva era de colaboración humano-robot?
- El ultrabook Linux Plasma VI de KDE Slimbook se lanza con AMD Ryzen 7 8845HS
- Elon Musk: Las naves espaciales se lanzarán a Marte en 2026. Los vuelos tripulados serán posibles en 2028
- La Vía Láctea al final podría escaparse de la colisión predestinada contra la galaxia de Andrómeda
- El gobierno de EE. UU. pide a la industria de impresión 3D que ayude a detener la impresión de dispositivos de conversión de ametralladoras
- 5 razones por las que Linux superará a Windows y MacOS en el escritorio, próximamente
- El crecimiento de Linux: Un hito en su popularidad con un 4,55% según StatCounter
- Se lanzó la herramienta de rescate del sistema Super Grub2 Disk 2.06s4 con soporte para Btrfs
- Europa se sube al tren
- El encargado de mantenimiento de Rust para Linux se retira frustrado por una "tontería no técnica"
- Japón lucha por popularizar la semana laboral de cuatro días