CVE-2026-69240 (CVSS 9.8) - Sequelize is a Node.js ORM tool. Prior to 6.37.4, SQL injection is possible with
CVE-2026-69240 是 Sequelize 在 Oracle 方言下的 SQL 注入漏洞,CVSS 9.8。攻击者利用 TO_DATE/TO_TIMESTAMP 绕过转义,可实现任意 SQL 执行和数据窃取。立即升级至 6.37.4 或采取临时缓解措施。
CVE-2026-69240 (CVSS 9.8) - Sequelize is a Node.js ORM tool. Prior to 6.37.4, SQL injection is possible with
📋 漏洞概述
Sequelize <6.37.4 在 Oracle 方言下存在 SQL 注入,攻击者可利用 TO_DATE/TO_TIMESTAMP 绕过转义,导致数据窃取与篡改。
📋 基础信息
| 受影响版本 | Sequelize < 6.37.4(npm 包 sequelize,仅在 dialect 设置为 oracle 时受影响) |
| 漏洞类型 | SQL注入 |
| CVSS | 9.8 · Critical |
| CVE | CVE-2026-69240 |
🔬 漏洞根因
Sequelize 的 sql-string.js 中 escape 函数在处理 Oracle 方言时,若字符串以 TO_TIMESTAMP 或 TO_DATE 开头,则直接返回原始值而不进行单引号转义。攻击者可通过构造以 TO_DATE 或 TO_TIMESTAMP 开头的字符串,注入恶意 SQL 表达式,破坏原有查询结构。该缺陷源于对特殊函数前缀的过度信任,未考虑前缀后拼接的任意内容。
🎯 攻击场景
1. 前提条件:应用使用 Sequelize 且 dialect 设置为 oracle,并将用户可控输入(如查询参数)直接传入查询条件。2. 攻击者构造请求:?firstName=TO_DATE('0','Y')||'' OR 1=1--。3. 应用将该值传入 Sequelize 的 where 条件,触发 escape 函数,因值以 TO_DATE 开头,原样返回。4. 拼接成的 SQL 为 SELECT ... WHERE "Student"."firstName" = TO_DATE('0','Y')||'' OR 1=1-- ORDER BY ...,注入条件使查询返回非预期数据。5. 攻击者可进一步利用 UNION 或错误信息等方式窃取数据、绕过认证或执行任意 SQL 语句。
💥 漏洞影响
攻击者可在 Oracle 数据库环境下利用该漏洞执行任意 SQL 表达式,导致敏感数据泄露(如用户表、密码哈希)、数据篡改(UPDATE/INSERT/DELETE)甚至认证绕过。CVSS 9.8 表明可利用性极高,无需特殊权限,且机密性、完整性、可用性均受严重影响。
🛡️ 修复建议
1. 立即将 sequelize 升级至 6.37.4 或更高版本,修复 escape 函数对 Oracle 特殊前缀的转义逻辑。2. 临时缓解:若无法立即升级,则避免在 Oracle 方言下直接拼接用户输入,对传入查询的所有字符串参数使用参数化查询或额外验证层。3. 建议对输入进行白名单校验,拒绝以 TO_DATE/TO_TIMESTAMP 开头的用户输入。4. 审查应用日志,确认是否存在针对该漏洞的利用尝试。
📎 参考链接
- https://nvd.nist.gov/vuln/detail/CVE-2026-69240
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-69240
- https://github.com/advisories/GHSA-v8fg-2rw7-q452
- 原始来源(NVD-Latest)
🚨 威胁评估
| 📈 EPSS 利用概率 | 低 (0.3%) (高于 24.4% 的漏洞) |
| 🚨 CISA KEV | 未被已知利用 |
| 🔧 公开 PoC | 暂无公开 PoC |
⚠️ 本文由漏洞情报系统自动生成,仅供安全研究与防御参考。生成时间: 2026-08-06 08:18 | 来源: NVD-Latest
🤖 常见问题解答(FAQ)
❓ 如何检测是否受此漏洞影响?
检查 sequelize 版本是否低于 6.37.4,且数据库 dialect 是否为 oracle。若两者均是,则存在风险。可运行 npm list sequelize 查看版本。
❓ Oracle 方言下如何临时防范该注入?
不要将用户输入直接传入 Sequelize 的 where 条件。对输入进行严格校验,禁止以 TO_DATE/TO_TIMESTAMP 开头,或改用参数化查询(如 Sequelize 的 replacements 机制)。
❓ 该漏洞会影响 MySQL 或 PostgreSQL 吗?
不影响。漏洞代码仅在 dialect === 'oracle' 分支中执行,只有 Oracle 方言下的字符串转义被绕过,其他方言仍会正常转义单引号。