La cantidad de vulnerabilidades relacionadas con la memoria en Android ha disminuido drásticamente en los últimos cinco años, gracias al uso por parte de Google de un enfoque seguro por diseño que enfatiza el uso de lenguajes seguros para la memoria como Rust para la mayoría del código nuevo.
Los problemas de seguridad de la memoria, como los desbordamientos del búfer y los errores de uso después de la liberación, ahora representan solo el 24% de todas las vulnerabilidades de Android, frente al 76% en 2019. Las cifras en lo que va del año sugieren un total de 36 vulnerabilidades relacionadas con la memoria de Android. para todo 2024, aproximadamente la mitad del número de fallas del año pasado y muy lejos de las 223 fallas de 2019.
Un enfoque de diseño seguro da sus frutos
en un Entrada de blog del 25 de septiembreLos investigadores de los equipos de seguridad y Android de Google atribuyeron el progreso a Safe Coding, un enfoque seguro por diseño de la compañía que prioriza lenguajes seguros para la memoria como Rust para desarrollar código nuevo. “Basándonos en lo que aprendimos, quedó claro que no necesitamos desechar o reescribir todo nuestro código existente que no es seguro para la memoria”, escribieron los investigadores. “En cambio, Android está trabajando para hacer que la interoperabilidad sea segura y práctica como una capacidad central en nuestro camino hacia la seguridad de la memoria”.
Vulnerabilidades de seguridad de la memoria Tradicionalmente han sido responsables y continúan representando más del 60% de todas las vulnerabilidades del software de aplicaciones. También eran desproporcionadamente graves en comparación con otros defectos. Por ejemplo, en 2022, los errores relacionados con la memoria representó solo el 36% de todas las vulnerabilidades identificadas en Android pero representó el 86% de los fallos más graves del sistema operativo y el 78% de los errores confirmados explotados en Android.
Esto se debe en gran medida a la forma en que los lenguajes de programación ampliamente utilizados, como C y C++, permiten a los desarrolladores de software manipular directamente la memoria, dejando la puerta abierta a errores. Por el contrario, los lenguajes seguros para la memoria como Rust, Go y C# tienen funciones. gestión automática de la memoria y controles de seguridad integrados contra errores comunes relacionados con la memoria. Muchos actores de seguridad, incluido Estados Unidos Agencia de Seguridad de Infraestructura y Ciberseguridad (CISA) e incluso la casa blanca han planteado preocupaciones sobre la mayor exposición a la seguridad asociada con el uso de lenguajes de memoria inseguros y los costos sustanciales que implica abordar esto. Aunque el paso a lenguajes seguros para la memoria ha sido ganando impulso lentamentemuchos esperan que se necesitarán años, si no décadas, para migrar completamente las bases de código existentes a código seguro para la memoria.
Una transición gradual
El enfoque de Google ante el problema ha sido utilizar lenguajes seguros para la memoria como Rust para las nuevas funciones de Android y dejar el código existente prácticamente intacto, excepto para corregir errores. El resultado es que en los últimos años ha habido una desaceleración gradual en las nuevas actividades de desarrollo que involucran lenguajes no seguros para la memoria, acompañada por un aumento en las actividades de desarrollo seguras para la memoria, dijeron los dos investigadores de Google.
Google inició la transición con soporte Rust en Android 12 y poco a poco ha ido incrementando el uso del lenguaje de programación dentro del Proyecto Android Open Source. Android 13 marcó la primera vez que la mayoría de los códigos nuevos del sistema operativo estaban en un lenguaje seguro para la memoria. En ese momento, Google enfatizó que su objetivo no era convertir todo el código C y C++ a Rust, sino hacer una transición gradual al nuevo lenguaje de programación con el tiempo.
En una publicación de blog a principios de este año, los miembros del equipo de ingeniería de seguridad de Google informaron haber visto “No hay un camino realista para la evolución de C++. en un lenguaje con rigurosas garantías de seguridad de memoria. » Pero en lugar de alejarse de esto de una vez, Google continuará invirtiendo en herramientas para mejorar la seguridad de la memoria en C y C++ para respaldar las bases de código existentes de la compañía escritas en estos lenguajes.
Significativamente, Google descubrió que los errores relacionados con la memoria como porcentaje de todas las vulnerabilidades de Android han disminuido no solo debido al uso cada vez mayor por parte de la compañía de un lenguaje seguro para la memoria como Rust, sino también porque las vulnerabilidades más antiguas se han degradado con el tiempo. Los investigadores descubrieron que la cantidad de vulnerabilidades en una determinada cantidad de código (a menudo llamada densidad de vulnerabilidad) era menor en el código de Android de cinco años de antigüedad en comparación con el código nuevo.
“El problema radica esencialmente en el nuevo código, que requiere un cambio fundamental en la forma en que desarrollamos el código”, dijeron los investigadores.