Chrome: el 70% de todos los errores de seguridad son problemas de seguridad de la memoria


chrome-memory-bugs.png

Imagen: Google

Aproximadamente el 70% de todos los errores de seguridad graves en la foundation de código de Chrome son errores de seguridad y administración de memoria, dijeron los ingenieros de Google esta semana.

La mitad del 70% son vulnerabilidades sin uso, un tipo de problema de seguridad que surge de la gestión incorrecta de punteros de memoria (direcciones), dejando las puertas abiertas para que los atacantes ataquen los componentes internos de Chrome.

El porcentaje se compiló después de que los ingenieros de Google analizaron 912 errores de seguridad corregidos en la rama estable de Chrome desde 2015, errores que tenían una calificación de gravedad «alta» o «crítica».

El número es idéntico a las estadísticas compartidas por Microsoft. Hablando en una conferencia de seguridad en febrero de 2019, los ingenieros de Microsoft dijeron que durante los últimos 12 años, alrededor del 70% de todas las actualizaciones de seguridad para productos de Microsoft abordaron las vulnerabilidades de seguridad de la memoria.

El problema interminable de la gestión de la memoria.

Básicamente, ambas compañías están lidiando con el mismo problema, a saber, que 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 package.

Como resultado, tanto C como C ++ permiten a los programadores tener un handle whole sobre cómo administran los punteros de memoria (direcciones) de una aplicación y no vienen con restricciones o advertencias para prevenir o alertar a los desarrolladores cuando están cometiendo errores básicos de administración de memoria.

Estos primeros errores de codificación provocan la introducción de vulnerabilidades de administración de memoria en las aplicaciones. Esto incluye vulnerabilidades como el uso después de libre, desbordamiento de búfer, condiciones de carrera, doble libre, punteros salvajes, y otros.

Estas vulnerabilidades de administración de memoria son los errores más buscados 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, and so forth.) lo ejecute. )

En un rating publicado a principios de año, la Corporación MITRE, la organización que administra la base de datos de vulnerabilidad del gobierno de EE. UU., clasificó el desbordamiento del búfer como la vulnerabilidad más peligrosa, con otros dos problemas relacionados con la administración de memoria también clasificados entre los 10 primeros (lectura fuera de los límites en el n. ° 5 y use-immediately after-free of charge en el n. ° 7).

A medida que la ingeniería de software ha avanzado en los últimos años, los desarrolladores han ido mejorando para eliminar la mayoría de las fallas de seguridad y agregar protecciones de seguridad.

Pero no para las vulnerabilidades de gestión de memoria.

Google busca abordar los errores de memoria de Chrome

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 gestión de la memoria sigue siendo un problema.

El problema de los errores de administración de memoria ha sido un problema tan grande en Google que los ingenieros de Chrome ahora tienen que seguir «La regla de 2«.

De acuerdo con esta regla, cada vez que los ingenieros escriben una nueva función de Chrome, 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 ++)
rule-of-two.png "src =" https://zdnet3.cbsistatic.com/hub/i/2020/05/23/a5981c5a-6fc3-43b4-abf7-1c30bfac9182/rule-of-two.png

Imagen: Google

Si bien las compañías de software program han intentado antes solucionar los problemas de administración de memoria de C y C ++, Mozilla ha sido un gran avance al patrocinar, promover y adoptar en gran medida el lenguaje de programación Rust en Firefox.

Hoy, Rust es considerado uno de los lenguajes de programación más seguros y un reemplazo suitable para C y C ++, principalmente debido a los primeros esfuerzos de Mozilla.

Pero Mozilla no ha sido la única organización que ha tenido suficiente de tratar con código C y C ++ propensos a errores.

Microsoft también está invirtiendo fuertemente en la exploración de alternativas C y C ++. Desde su primer proyecto Checked C, la compañía ahora está experimentando con Rust, y también está construyendo su propio lenguaje de programación «seguro» very similar a Rust (parte del secreto Proyecto Verona).

Hablando en la conferencia virtual Create de esta semana, Microsoft dijo que estos dos esfuerzos han tenido éxito y que la compañía se volvió a dedicar a adoptar un lenguaje de programación seguro en el futuro.

Pero esta semana, Google también anunció planes similares. La compañía dijo que también planea estudiar «abordar el problema de inseguridad de la memoria» para Chrome, el navegador web más popular de hoy, utilizado por casi el 70% de los usuarios de World wide web.

Chrome ha alcanzado el sandboxing máximo

Hasta hoy, los ingenieros de Google han sido fervientes partidarios del enfoque sandbox en Chrome. Aislaron decenas de procesos en su propia caja de arena, y recientemente han implementado Aislamiento del sitio, una característica que pone los recursos de cada sitio en su propio proceso de espacio aislado también.

Sin embargo, los ingenieros de Google dicen que su enfoque para el sandboxing de los componentes de 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 foundation de código de Chrome, bibliotecas que tienen mejores protecciones contra errores relacionados con la memoria.

El fabricante del navegador también está explorando MiraclePtr proyecto, cuyo objetivo es convertir «errores aprovechables sin uso en fallas no relacionadas con la seguridad con un rendimiento aceptable, memoria, tamaño binario y un impacto mínimo en la estabilidad».

Y por último, pero no menos importante, Google también dijo que planea explorar el uso de idiomas «seguros», cuando sea posible. Los candidatos incluyen Rust, Swift, JavaScript, Kotlin y Java.



Enlace a la noticia first