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
- Minero de Bitcoin compra un parque eólico de 112 megavatios en Texas y lo retira de la red
- La versión candidata a la versión GIMP 3.0 ya está disponible para pruebas públicas
- Cómo ejecutar aplicaciones Android en Linux
- Cómo formatear discos en Linux desde la línea de comandos
- Cuarenta y tres monos escapan de un laboratorio de investigación en Estados Unidos
- Intel observa una mejora del rendimiento del 3888,9 % en el kernel de Linux: a partir de una línea de código
- Cómo crear un túnel SSH en Linux
- Cómo configurar el firewall UFW en Ubuntu en 5 minutos
- Linux Lite acaba de incorporar una útil función de inteligencia artificial para el escritorio, y es más sutil de lo que cree
- Cómo instalar Linux en una unidad USB y ejecutarlo en cualquier PC
- Phoca Desktop System Plugin 4.0.5 publicado
- Herramientas de IA para Traducciones Precisas y Naturales: Cómo Optimizar el Proceso
- 6 características que desearía que MacOS copiara de Linux
- Malware en Android: VPN y Apps Peligrosas en Play Store
- Probar el micrófono en Linux usando terminal o shell