GitHub Advisoryadvisory · npm
GHSA-f598-mfpv-gmfx Sequelize - Default support for “raw attributes” when using parentheses
CRITICAL
Official page ↗
- Aliases
- CVE-2023-22578
- Ecosystem
- npm
- Packages
- @sequelize/core, sequelize
- Severity
- Critical
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
- Weaknesses
- CWE-790
- Reviewed
- 2023-02-24
Affected packages
• npm @sequelize/core: < 7.0.0-alpha.20 → fixed in 7.0.0-alpha.20
• npm sequelize: < 6.29.0 → fixed in 6.29.0
Description
Impact
Sequelize 6.28.2 and prior has a dangerous feature where using parentheses in the attribute option would make Sequelize use the string as-is in the SQL
```ts
User.findAll({
attributes: [
['count(id)', 'count']
]
});
```
Produced
```sql
SELECT count(id) AS "count" FROM "users"
```
Patches
This feature was deprecated in Sequelize 5, and using it prints a deprecation warning.
This issue has been patched in `@sequelize/[email protected]` and `[email protected]`.
In Sequelize 7, it now produces the following:
```sql
SELECT "count(id)" AS "count" FROM "users"
```
In Sequelize 6, it throws an error explaining that we had to introduce a breaking change, and requires the user to explicitly opt-in to either the Sequelize 7 behavior (always escape) or the Sequelize 5 behavior (inline attributes that include `()` without escaping). See https://github.com/sequelize/sequelize/pull/15710 for more information.
Mitigations
Do not use user-provided content to build your list or attributes. If you do, make sure that attribute in question actually exists on your model by checking that it exists in the `rawAttributes` property of your model first.
---
A discussion thread about this issue is open at https://github.com/sequelize/sequelize/discussions/15694
CVE: CVE-2023-22578
Related
Alias · CVE (1)
- CVE-2023-22578 Due to improper artibute filtering in the sequalize js library, can a attacker peform SQL injections. vulnerability
Weakness · CWE (1)
- CWE-790 Improper Filtering of Special Elements weakness
References
- https://github.com/sequelize/sequelize/security/advisories/GHSA-f598-mfpv-gmfx web
- https://nvd.nist.gov/vuln/detail/CVE-2023-22578 advisory
- https://github.com/sequelize/sequelize/pull/15710 web
- https://csirt.divd.nl/CVE-2023-22578 web
- https://csirt.divd.nl/DIVD-2022-00020 web
- https://github.com/sequelize/sequelize package
- https://github.com/sequelize/sequelize/discussions/15694 web
- https://github.com/sequelize/sequelize/releases/tag/v6.29.0 web
- https://github.com/sequelize/sequelize/releases/tag/v7.0.0-alpha.20 web