ormar 的下载量已超441 万次,是 FastAPI 及各类异步 Python 应用的常用组件,因此该漏洞的潜在影响范围极大。
漏洞根源在于库中聚合函数调用逻辑,具体为min()和max()方法。技术报告指出,问题核心是该 ORM 框架 “将用户传入的列名直接传入sqlalchemy.text()构造 SQL 表达式,完全未做任何验证或净化处理”。
sum()、avg()等其他函数通过类型检查实现了部分防护,但min()和max()函数完全跳过了这些安全校验。这一疏漏使得攻击者可向原生 SQL 查询中注入任意字符串。报告警示:“未授权用户可通过向列参数中注入子查询,利用该漏洞读取数据库全部内容,包括与查询模型无关的表数据。”SelectAction.get_text_clause()方法与min()/max()聚合函数是同期引入的…… 且相关漏洞代码自始至终未被修改。” 这意味着所有运行0.9.9 至 0.22.0 版本 ormar的应用当前均面临风险。Model.objects.min()或Model.objects.max()的 API 端点,都会成为完整的 SQL 注入入口。该攻击方式已被证实可在所有主流支持的数据库后端(SQLite、PostgreSQL、MySQL)上成功实施。总结
- ormar 库的
min()/max()聚合函数因未校验用户输入,存在高危 SQL 注入漏洞(CVE-2026-26198,CVSS 9.8),可导致数据库全量数据泄露; - 0.9.9 至 0.22.0 版本均受影响,0.23.0 版本已完成修复,需立即升级;
- 接收用户输入作为聚合字段的 FastAPI/GraphQL 接口是攻击重灾区,需重点审计。








发表评论
您还未登录,请先登录。
登录