GitHub Advisoryadvisory · npm

GHSA-9c2p-jw8p-f84v SQL Injection in sequelize

HIGH Published 2019-02-18 Modified 2023-09-11 Official page ↗
Aliases
CVE-2016-10556
Ecosystem
npm
Packages
sequelize
Severity
High
CVSS vector
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weaknesses
CWE-89
Reviewed
2020-06-16

Affected packages

• npm sequelize: < 3.20.0 → fixed in 3.20.0

Description

Affected versions of `sequelize` cast arrays to strings and fail to properly escape the resulting SQL statement, resulting in a SQL injection vulnerability. Proof of Concept In Postgres, SQLite, and Microsoft SQL Server there is an issue where arrays are treated as strings and improperly escaped. Example Query: ``` database.query('SELECT * FROM TestTable WHERE Name IN (:names)', { replacements: { names: directCopyOfUserInput } }); ``` If the user inputs the value of `:names` as: ``` ["test", "'); DELETE TestTable WHERE Id = 1 --')"] ``` The resulting SQL statement will be: ```sql SELECT Id FROM Table WHERE Name IN ('test', '\'); DELETE TestTable WHERE Id = 1 --') ``` As the backslash has no special meaning in PostgreSQL, MSSQL, or SQLite, the statement will delete the record in TestTable with an Id of 1. Recommendation Update to version 3.20.0 or later.

Related

Alias · CVE (1)

  • CVE-2016-10556 sequelize is an Object-relational mapping, or a middleman to convert things from Postgres, MySQL, MariaDB, SQLite and Microsoft SQL Server… vulnerability

Weakness · CWE (1)

  • CWE-89 Improper Neutralization of Special Elements used in an SQL Command weakness

References