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
- Systemd anuncia la alternativa Sudo 'run0'
- Los pagos de Google a Apple alcanzaron los 20 mil millones de dólares en 2022, según muestran documentos del tribunal antimonopolio
- KDE Plasma 6.0.4 está disponible para mejorar Plasma Wayland, System Monitor y más
- Cómo instalar un clúster de Kubernetes en CentOS
- Airbnb prohíbe las cámaras de seguridad interiores
- Estados Unidos debe actuar "decisivamente" para evitar la amenaza de "nivel de extinción" causada por la IA, según un informe encargado por el gobierno
- Seis Profesiones Emergentes: Cómo la Inteligencia Artificial Está Creando Oportunidades Laborales Diversas
- Las 14 principales distribuciones de Linux para usuarios de Windows (2024)
- ¡GIMP 3 está por llegar! Las 3 funciones que más me entusiasman (y por qué)
- IA generativa: la próxima gran novedad
- Sparky Linux es una distribución increíblemente rápida que puede mantener tus máquinas más antiguas funcionando durante años
- Los 5 mejores reproductores de radio por Internet de código abierto para Linux
- Las entrevistas de trabajo tecnológicas están fuera de control
- Los investigadores crean gusanos de IA que pueden propagarse de un sistema a otro
- NetworkManager 1.46 mejora la compatibilidad con Wi-Fi de 6 GHz y agrega configuraciones de Ethernet de bajo consumo