Python库ormar曝出高危SQL注入漏洞

阅读量5908

发布时间 : 2026-02-27 10:29:42

x
译文声明

本文是翻译文章,文章原作者 Ddos ,文章来源:securityonline

原文地址:https://securityonline.info/critical-sql-injection-vulnerability-found-in-ormar-python-library/

译文仅供参考,具体内容表达以及含义原文为准。

热门 Python 异步轻量级对象关系映射(ORM)库ormar被发现存在重大安全漏洞。该库主要用于衔接 Postgres、MySQL 和 SQLite 数据库,是众多开发者的核心工具。此次曝出的漏洞编号为CVE-2026-26198CVSS 评分高达 9.8 分,可能导致未授权攻击者窃取整个数据库的全部数据。

ormar 的下载量已超441 万次,是 FastAPI 及各类异步 Python 应用的常用组件,因此该漏洞的潜在影响范围极大。

漏洞根源在于库中聚合函数调用逻辑,具体为min()max()方法。技术报告指出,问题核心是该 ORM 框架 “将用户传入的列名直接传入sqlalchemy.text()构造 SQL 表达式,完全未做任何验证或净化处理”。

尽管sum()avg()等其他函数通过类型检查实现了部分防护,但min()max()函数完全跳过了这些安全校验。这一疏漏使得攻击者可向原生 SQL 查询中注入任意字符串。报告警示:“未授权用户可通过向列参数中注入子查询,利用该漏洞读取数据库全部内容,包括与查询模型无关的表数据。”
安全分析显示,该漏洞最早可追溯至2021 年 3 月 12 日—— 有问题的代码在 0.9.9 版本中被引入,且近四年间未做任何修改。
研究人员指出:“存在漏洞的SelectAction.get_text_clause()方法与min()/max()聚合函数是同期引入的…… 且相关漏洞代码自始至终未被修改。” 这意味着所有运行0.9.9 至 0.22.0 版本 ormar的应用当前均面临风险。
由于许多开发者严格遵循该库的官方文档进行开发,这一漏洞常被植入标准 API 设计中。报告特别强调,“支持用户自选聚合字段的 REST API” 或 “接收字段名作为参数的 GraphQL 解析器” 是最易受攻击的场景。
研究人员通过标准 FastAPI 应用验证了攻击可行性:任何将用户可控输入传入Model.objects.min()Model.objects.max()的 API 端点,都会成为完整的 SQL 注入入口。该攻击方式已被证实可在所有主流支持的数据库后端(SQLite、PostgreSQL、MySQL)上成功实施。
ormar 维护团队已迅速修复该高危漏洞,0.23.0 版本已完全解决此问题
研究人员强烈建议开发者和系统管理员立即审计 Python 运行环境,并尽快将 ormar 依赖升级至最新版本

总结

  1. ormar 库的min()/max()聚合函数因未校验用户输入,存在高危 SQL 注入漏洞(CVE-2026-26198,CVSS 9.8),可导致数据库全量数据泄露;
  2. 0.9.9 至 0.22.0 版本均受影响,0.23.0 版本已完成修复,需立即升级;
  3. 接收用户输入作为聚合字段的 FastAPI/GraphQL 接口是攻击重灾区,需重点审计。
本文翻译自securityonline 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
安全客
分享到:微信

发表评论

Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全KER All Rights Reserved 京ICP备08010314号-66