Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

github логотип

GHSA-9c2p-jw8p-f84v

Опубликовано: 18 фев. 2019
Источник: github
Github: Прошло ревью
CVSS3: 7.5

Описание

SQL Injection in sequelize

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:

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.

Пакеты

Наименование

sequelize

npm
Затронутые версииВерсия исправления

<= 3.19.3

3.20.0

EPSS

Процентиль: 44%
0.0022
Низкий

7.5 High

CVSS3

Дефекты

CWE-89

Связанные уязвимости

CVSS3: 7.5
nvd
больше 7 лет назад

sequelize is an Object-relational mapping, or a middleman to convert things from Postgres, MySQL, MariaDB, SQLite and Microsoft SQL Server into usable data for NodeJS In Postgres, SQLite, and Microsoft SQL Server there is an issue where arrays are treated as strings and improperly escaped. This causes potential SQL injection in sequelize 3.19.3 and earlier, where a malicious user could put `["test", "'); DELETE TestTable WHERE Id = 1 --')"]` inside of ``` database.query('SELECT * FROM TestTable WHERE Name IN (:names)', { replacements: { names: directCopyOfUserInput } }); ``` and cause the SQL statement to become `SELECT Id FROM Table WHERE Name IN ('test', '\'); DELETE TestTable WHERE Id = 1 --')`. In Postgres, MSSQL, and SQLite, the backslash has no special meaning. This causes the the statement to delete whichever Id has a value of 1 in the TestTable table.

EPSS

Процентиль: 44%
0.0022
Низкий

7.5 High

CVSS3

Дефекты

CWE-89