Vulnerabilidad crítica de nodeJS

Un módulo de nodeJS con millones de descargas, cuenta con una vulnerabilidad que puede permitir un ataque de Denegación de Servicio (Two) en un servidor u obtener acceso a shell remoto completo.

Asignado al CVE-2020-7699, la vulnerabilidad radica en el componente npmexpress-fileupload”, que se ha descargado al menos 7.3 millones de veces desde npm. La estimación es conservadora, ya que no tiene en cuenta las descargas de GitHub, sitios web espejo y otros repositorios clonados. Este tipo de vulnerabilidad generalmente ocurre en el código JavaScript (JS) debido a la naturaleza fundamental del lenguaje. Debido a que JS es un lenguaje basado en prototipos, cada objeto, función y estructura de datos en el lenguaje tiene una propiedad inherentePrototypeque puede modificarse mediante el mutador__proto__”. La capacidad de modificar el código existente es una característica prevista que permite la fácil extensión de los objetos existentes, con más propiedades y métodos.

Los ataques de creación de prototipos como este aprovechan este ‘fallo de diseñoinyectando objetos incompatibles con los existentes para causar errores, lo que lleva a la Denegación de Servicio o ejecutar una shell.

El ataque es posible gracias a la funciónparseNestedproporcionada por express-fileupload. Cuando está habilitada, esta opción es responsable de interpretar los datos JSON cargados en objetos anidados. El módulo express-fileupload proporciona varias opciones para cargar y administrar archivos en la aplicación Node.js. Entre ellos, el argumento de parseNested hace que el argumento sea plano.

Cuando se proporciona una carga útil en el encabezado HTTPContent-Disposition”, un atacante puede proporcionar un valor__proto __. ToStringpara activar el ataque. Básicamente, la solicitud HTTP anula y corrompe el método incorporadotoStringde cada objeto presente en su código. Then, si elObject.prototype.toStringpuede contaminarse, esto causa un error, y para cada solicitud siempre se devuelve un ERROR 500.

Una variación más sofisticada permite a un atacante obtener un shell en el sistema vulnerable. A las pocas horas de recibir el informe de un investigador, “express-fileuploadsolucionó la vulnerabilidad, y los usuarios afectados deben descargar la versión 1.1.9 parcheada desde npm.

Leave a Reply

Your email address will not be published. Required fields are marked *

Intec Cybersecurity
Intec Cybersecurity
intec cybersecurity