SQL Injection via escapeName() in all Drizzle ORM SQL dialects
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- SQL injection
- Confidentiality · integrity · availability
- High · None · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-89.
Summary
Drizzle is a modern TypeScript ORM. Prior to 0.45.2 and 1.0.0-beta.20, Drizzle ORM improperly escaped quoted SQL identifiers in its dialect-specific escapeName() implementations. In affected versions, embedded identifier delimiters were not escaped before the identifier was wrapped in quotes or backticks. As a result, applications that pass attacker-controlled input to APIs that construct SQL identifiers or aliases, such as sql.identifier(), .as(), may allow an attacker to terminate the quoted identifier and inject SQL. This vulnerability is fixed in 0.45.2 and 1.0.0-beta.20.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| drizzle-team | drizzle-orm | before 0.45.2; 1.0.0-beta.2 to before 1.0.0-beta.20 | 0.45.2, 1.0.0-beta.20 | Patch available | CNA |
| — | drizzle-orm (npm) | before 0.45.2 | 0.45.2 | Patch available | GHSA-gpj5-g38j-94v9 |
| — | drizzle-orm (npm) | 1.0.0-beta.2 to before 1.0.0-beta.20 | 1.0.0-beta.20 | Patch available | GHSA-gpj5-g38j-94v9 |
- drizzle-orm Vendordrizzle-team Affected before 0.45.2; 1.0.0-beta.2 to before 1.0.0-beta.20 Fixed in 0.45.2, 1.0.0-beta.20 Patch available CNA
- drizzle-orm (npm) Vendor— Affected before 0.45.2 Fixed in 0.45.2 Patch available GHSA-gpj5-g38j-94v9
- drizzle-orm (npm) Vendor— Affected 1.0.0-beta.2 to before 1.0.0-beta.20 Fixed in 1.0.0-beta.20 Patch available GHSA-gpj5-g38j-94v9
CPE configurations NVD · 19
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:drizzle:drizzle:*:*:*:*:*:node.js:*:* | before 0.45.2 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta1:*:*:*:node.js:*:* | 1.0.0 beta1 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta11:*:*:*:node.js:*:* | 1.0.0 beta11 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta12:*:*:*:node.js:*:* | 1.0.0 beta12 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta13:*:*:*:node.js:*:* | 1.0.0 beta13 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta14:*:*:*:node.js:*:* | 1.0.0 beta14 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta15:*:*:*:node.js:*:* | 1.0.0 beta15 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta16:*:*:*:node.js:*:* | 1.0.0 beta16 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta17:*:*:*:node.js:*:* | 1.0.0 beta17 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta18:*:*:*:node.js:*:* | 1.0.0 beta18 | Vulnerable | Drizzle |
- cpe:2.3:a:drizzle:drizzle:*:*:*:*:*:node.js:*:* Versions before 0.45.2 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta1:*:*:*:node.js:*:* Versions 1.0.0 beta1 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta11:*:*:*:node.js:*:* Versions 1.0.0 beta11 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta12:*:*:*:node.js:*:* Versions 1.0.0 beta12 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta13:*:*:*:node.js:*:* Versions 1.0.0 beta13 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta14:*:*:*:node.js:*:* Versions 1.0.0 beta14 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta15:*:*:*:node.js:*:* Versions 1.0.0 beta15 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta16:*:*:*:node.js:*:* Versions 1.0.0 beta16 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta17:*:*:*:node.js:*:* Versions 1.0.0 beta17 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta18:*:*:*:node.js:*:* Versions 1.0.0 beta18 Vulnerable ·Drizzle
Show 9 more CPE
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta19:*:*:*:node.js:*:* | 1.0.0 beta19 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta2:*:*:*:node.js:*:* | 1.0.0 beta2 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta3:*:*:*:node.js:*:* | 1.0.0 beta3 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta4:*:*:*:node.js:*:* | 1.0.0 beta4 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta5:*:*:*:node.js:*:* | 1.0.0 beta5 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta6:*:*:*:node.js:*:* | 1.0.0 beta6 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta7:*:*:*:node.js:*:* | 1.0.0 beta7 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta8:*:*:*:node.js:*:* | 1.0.0 beta8 | Vulnerable | Drizzle |
| cpe:2.3:a:drizzle:drizzle:1.0.0:beta9:*:*:*:node.js:*:* | 1.0.0 beta9 | Vulnerable | Drizzle |
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta19:*:*:*:node.js:*:* Versions 1.0.0 beta19 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta2:*:*:*:node.js:*:* Versions 1.0.0 beta2 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta3:*:*:*:node.js:*:* Versions 1.0.0 beta3 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta4:*:*:*:node.js:*:* Versions 1.0.0 beta4 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta5:*:*:*:node.js:*:* Versions 1.0.0 beta5 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta6:*:*:*:node.js:*:* Versions 1.0.0 beta6 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta7:*:*:*:node.js:*:* Versions 1.0.0 beta7 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta8:*:*:*:node.js:*:* Versions 1.0.0 beta8 Vulnerable ·Drizzle
- cpe:2.3:a:drizzle:drizzle:1.0.0:beta9:*:*:*:node.js:*:* Versions 1.0.0 beta9 Vulnerable ·Drizzle
Remediation
- Fix · CNA drizzle-orm (drizzle-team) Fixed in 0.45.2, 1.0.0-beta.20
- Fix · GHSA-gpj5-g38j-94v9 drizzle-orm (npm) Fixed in 0.45.2 Advisory →
- Fix · GHSA-gpj5-g38j-94v9 drizzle-orm (npm) Fixed in 1.0.0-beta.20 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-39356
- 2026-10-03 Alias added: GHSA-gpj5-g38j-94v9
References
Sources
- CVE-2026-39356 · CVE Program
- CVE-2026-39356 · NVD
- FIRST EPSS
- GHSA-gpj5-g38j-94v9 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences