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 或采取临时缓解措施。

🔥 热门漏洞情报 · NVD-Latest · 2026-08-03

CVE-2026-69240 (CVSS 9.8) - Sequelize is a Node.js ORM tool. Prior to 6.37.4, SQL injection is possible with

Critical · CVSS 9.8 SQL注入
CVE-2026-69240
📊 跨来源整合GitHub-Advisory

📋 漏洞概述

Sequelize <6.37.4 在 Oracle 方言下存在 SQL 注入,攻击者可利用 TO_DATE/TO_TIMESTAMP 绕过转义,导致数据窃取与篡改。

📋 基础信息

受影响版本Sequelize < 6.37.4(npm 包 sequelize,仅在 dialect 设置为 oracle 时受影响)
漏洞类型SQL注入
CVSS9.8 · Critical
CVECVE-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. 审查应用日志,确认是否存在针对该漏洞的利用尝试。

📎 参考链接

🚨 威胁评估

📈 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 方言下的字符串转义被绕过,其他方言仍会正常转义单引号。

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)