CVE-2026-39356Drizzle ORM是一个现代化的TypeScript ORM框架。在0.45.2和1.0.0-beta.20之前的版本中,该组件在其特定方言的escapeName()实现中未能正确转义带引号的SQL标识符。由于嵌入的标识符分隔符在标识符被引号或反引号包裹之前未被转义,攻击者可以通过sql.identifier()或.as()等API接口,利用攻击者控制的输入终止带引号的标识符并注入恶意SQL语句。该漏洞可能导致敏感数据泄露,已被官方在后续版本中修复。
该漏洞源于Drizzle ORM在处理SQL标识符时的逻辑缺陷。在数据库操作中,标识符(如表名、列名)通常需要被特定的字符(如反引号或双引号)包裹以区分于SQL关键字或字符串。Drizzle ORM的escapeName()函数负责对标识符进行转义处理。然而,在受影响版本中,当输入包含嵌入的标识符分隔符(例如反引号内部包含反引号)时,系统未能正确地转义这些内部字符,导致攻击者可以提前闭合标识符的包裹符号。具体而言,若应用程序将用户可控的数据直接传递给sql.identifier()或.as()方法用于构建动态SQL查询,攻击者可以构造包含恶意SQL片段的输入。一旦输入成功闭合了前面的标识符引号,攻击者即可注入任意的SQL命令。由于CVSS评分为7.5且主要影响机密性(C:H),攻击者无需认证且无需用户交互即可通过网络利用此漏洞,执行非法的SQL查询以窃取数据库中的敏感信息。