Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en sequelize (CVE-2016-10556)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-89 Neutralización incorrecta de elementos especiales usados en un comando SQL (Inyección SQL)
Fecha de publicación:
29/05/2018
Última modificación:
09/10/2019

Descripción

sequelize es un mapeo objeto-relacional, o un "middleman", para convertir elementos de Postgres, MySQL, MariaDB, SQLite y Microsoft SQL Server en datos usables para NodeJS. En Postgres, SQLite y Microsoft SQL Server, hay un problema por el cual los arrays se tratan como cadenas y se escapan incorrectamente. Esto provoca una potencial inyección SQL en sequelize en versiones 3.19.3 y anteriores, donde un usuario malicioso podría colocar `["test", "'); DELETE TestTable WHERE Id = 1 --')"]` en ``` database.query('SELECT * FROM TestTable WHERE Name IN (:names)', { replacements: { names: directCopyOfUserInput } }); ``` y provocar que la instrucción SQL se convierta en `SELECT Id FROM Table WHERE Name IN ('test', '\'); DELETE TestTable WHERE Id = 1 --')`. En Postgres, MSSQL y SQLite, la barra diagonal invertida no tiene un significado especial. Esto provoca que la instrucción elimine todos los ID que tengan un valor de 1 en la tabla TestTable.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:sequelizejs:sequelize:*:*:*:*:*:node.js:*:* 3.19.3 (incluyendo)