Ingenieros de Google han analizado los mayores errores de seguridad en Chrome reparados en la rama estable del navegador desde 2015 obteniendo conclusiones interesantes: la mayoría están relacionadas con la administración de la memoria.
En concreto, el 70% de las 912 vulnerabilidades de Chrome analizadas y calificadas como de gravedad «crítica» o «alta», están relacionadas con la gestión incorrecta de la memoria, especialmente en sus direcciones, dejando las puertas abiertas para ataques a los componentes internos del navegador. El dato es congruente con otros informes como el de Microsoft. Durante los últimos 12 años, alrededor del 70% de todas las actualizaciones de seguridad para productos de Microsoft abordaron vulnerabilidades de seguridad de la memoria.
Básicamente, ambas compañías están lidiando con el mismo problema. Y viene de lejos. C y C ++, los dos lenguajes de programación predominantes en sus bases de código, son lenguajes «inseguros». Son viejas herramientas de programación creadas hace décadas cuando la explotación de seguridad y los ataques cibernéticos no eran un modelo de amenaza relevante y estaban lejos de la mente de la mayoría de los primeros desarrolladores de software.
Como resultado, tanto C como C ++ permiten a los programadores tener un control total sobre cómo administran los punteros de memoria (direcciones) de una aplicación y no incluyen restricciones o advertencias para prevenir o alertar a los desarrolladores cuando están cometiendo errores básicos de gestión de la memoria.
Estos primeros errores de codificación provocan la introducción de vulnerabilidades de administración de memoria en las aplicaciones. Estas vulnerabilidades son los errores más buscados entre los que los atacantes intentan encontrar y explotar, ya que pueden otorgarles la capacidad de plantar código dentro de la memoria de un dispositivo y que la aplicación de la víctima (navegador, servidor, sistema operativo, etc.) lo ejecute.
Google dice que desde marzo de 2019, 125 de las 130 vulnerabilidades de Chrome con una calificación de gravedad «crítica» eran problemas relacionados con la corrupción de la memoria, lo que demuestra que a pesar de los avances en la corrección de otras clases de errores, la administración de la memoria sigue siendo un problema.
El problema es tan grande que los ingenieros de Chrome tienen que seguir reglas específicas y cada vez que escriben una nueva función en el navegador su código no debe romper más de dos de las siguientes condiciones:
- El código maneja entradas no confiables.
- El código se ejecuta sin sandbox.
- El código está escrito en un lenguaje de programación inseguro (C / C ++)
Si bien las compañías de software han intentado antes solucionar los problemas de administración de memoria de C y C ++, Mozilla fue quien hizo un gran avance al patrocinar, promover y adoptar en gran medida el lenguaje de programación Rust en Firefox. Hoy, es considerado uno de los lenguajes de programación más seguros y un reemplazo ideal para C y C ++.
En cuanto al uso del sandbox, del que ingenieros de Google han sido fervientes partidarios, dicen que este enfoque en Chrome ha alcanzado sus máximos beneficios al tener en cuenta el rendimiento, y que la compañía ahora debe buscar nuevos enfoques. En el futuro, Google dice que planea estudiar el desarrollo de bibliotecas C ++ personalizadas para usar con la base de código de Chrome, bibliotecas que tienen mejores protecciones contra errores relacionados con la memoria.
La entrada El 70% de las vulnerabilidades de Chrome están relacionados con la gestión de la memoria es original de MuySeguridad. Seguridad informática.