GHSA-9c2p-jw8p-f84v
GitHub Security Advisory
SQL Injection in sequelize
Advisory Details
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.
Affected Packages
Related CVEs
Key Information
Dataset
Data from GitHub Advisory Database. This information is provided for research and educational purposes.