lunes, 1 de julio de 2019

La popular biblioteca de jQuery se ve afectada por la falla de prototipo de contaminación

Falla de prototipo de contaminación

Las fallas llamadas prototipo de contaminación son "la gran preocupación" en investigaciones de seguridad sobre JavaScript.

Tres años después de su última falla de seguridad, la biblioteca de jQuery, utilizada en el 74 por ciento de todos los sitios de Internet, recibió otra revisión de seguridad esta semana.

Esta actualización de seguridad aborda una rara vulnerabilidad, llamada prototipo de contaminación, que los investigadores de seguridad recién ahora están empezando a comprender y descubrir en más y más bibliotecas de JavaScript.

¿Qué es la Contaminación del Prototipo?

Como su nombre indica, la contaminación prototipo se refiere a la capacidad de un atacante para modificar el prototipo de un objeto JavaScript.

Los objetos JavaScript son como variables, pero en lugar de almacenar un valor (var car = "Fiat"), pueden contener varios valores basados ​​en una estructura predefinida (var car = {type: "Fiat", modelo: "500", color: "blanco"}).

Los prototipos definen la estructura y los valores predeterminados de un objeto JavaScript, por lo que las aplicaciones no se bloquean cuando no se establecen valores.

Un atacante que logra modificar un prototipo de objeto de JavaScript puede afectar gravemente la forma en que los datos son procesados ​​por el resto de la aplicación y abrir la puerta a ataques más peligrosos, como bloqueos de aplicaciones (denegación de errores de vulnerabilidad) o secuestros de aplicaciones (fallas de ejecución de código).

La Contaminación del Prototipo, una Amenaza Creciente para Javascript

Los ataques prototípicos de contaminación no son nuevos y se documentaron por primera vez hace años. Sin embargo, solo ahora se están catalogando a fondo porque JavaScript, como lenguaje, ha evolucionado desde el manejo de las interacciones básicas de la interfaz de usuario hasta el trabajo con impresionantes cantidades de datos confidenciales como lenguaje de programación del lado del servidor: gracias al proyecto Node.js.

Por lo tanto, cualquier prototipo de ataque de contaminación ahora puede tener serias consecuencias en el mundo de internet donde casi todo gira en torno a JavaScript de una forma u otra, en aplicaciones de escritorio, móviles, de navegador o de servidor.

Durante el año pasado, y especialmente después de la presentación de Olivier Arteau en NorthSec 2018 sobre los ataques prototipo de contaminación, los investigadores de seguridad han comenzado a examinar más de cerca las bibliotecas de JavaScript que han estado utilizando y buscar posibles errores de contaminación prototipo.

Estos esfuerzos han dado como resultado el descubrimiento de múltiples prototipos de ataques de contaminación en más y más bibliotecas de JavaScript, como Mongoose, lodash.merge, node.extend, deep-extend y HAPI, algunas de ellas extremadamente populares para aplicaciones de servidor de JavaScript.

Prototipo de Contaminacion en Jquery

Esta constante charla sobre prototipos de ataques de contaminación también ha llamado la atención de Snyk, una compañía que proporciona tecnología de escaneo de código fuente, y cuyos investigadores estaban interesados ​​en documentar este nuevo vector de ataque.

Liran Tal, un investigador de seguridad de Snyk, realizo un análisis de prototipos de ataques de contaminación que ha resultado en el descubrimiento de una falla similar que afecta a jQuery, una biblioteca de JavaScript tan ubicua y arraigada en el trabajo de desarrollo web que se usa en el 97 por ciento de todos los sitios web que usan al menos una biblioteca de JavaScript.

Decir que jQuery es popular entre los desarrolladores de JavaScript es el equivalente a decir "el agua está mojada", lo que significa que cualquier prototipo de fallas de contaminación descubiertas en esta biblioteca abre automáticamente las puertas para los ataques a cientos de millones de sitios web.

En un informe publicado hace unas semanas, Tal y el equipo de Snyk describieron y publicaron el código de prueba de concepto para un prototipo de ataque de contaminación (CVE-2019-11358) que afectó a jQuery. Para mostrar cuán peligrosa es esta vulnerabilidad, mostraron cómo un defecto de contaminación prototipo podría permitir a los atacantes asignarse derechos de administrador en una aplicación web que utiliza el código jQuery para su interfaz.

No Fácil de Explotar

Pero la buena noticia es que los prototipos de ataques de contaminación no son explotables en masa, ya que cada código de explotación debe ajustarse para cada objetivo, individualmente. Las fallas de prototipos contra la contaminación requieren que los atacantes tengan un conocimiento profundo de cómo funciona cada sitio web con sus prototipos de objetos, y cómo estos prototipos son un factor en el gran esquema de las cosas.

Además, algunos sitios web no usan jQuery para ninguna operación de levantamiento de objetos pesados, sino simplemente para animar algunos menús y mostrar algunas ventanas emergentes, aquí y allá.

"Encontrar versiones de la vulnerabilidad de jQuery para este exploit no es una tarea difícil, pero automatizar una explotación real para el código personalizado que hace uso de la API vulnerable de jQuery con respecto a la contaminación prototipo sería más difícil", afirmo Tal.

Además, las aplicaciones y los sitios web que se basan en el código fuente cerrado también están protegidos contra algunos ataques, aclara Tal.

"La explotación del código fuente cerrado del lado del servidor, que no es fácil de acceder para los atacantes, requiere un poco de investigación para averiguar cómo la contaminación de un objeto global podría afectar a una aplicación, y sí la contaminación prototipo es aplicable en todos los casos." dijo el investigador.

Sin embargo, en los casos en los que jQuery se utiliza para operaciones más complejas, como la construcción de frontends completos, es un riesgo.

Fuente (en Ingles): ZDnet.com