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.
Impacto
Puntuación base 3.x
7.50
Gravedad 3.x
ALTA
Puntuación base 2.0
5.00
Gravedad 2.0
MEDIA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:a:sequelizejs:sequelize:*:*:*:*:*:node.js:*:* | 3.19.3 (incluyendo) |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página