CVE-2026-26198
严重已发布
ormar 存在通过聚合函数 min() 和 max() 触发的 SQL 注入漏洞
- 已发布
- 2026年2月24日
- 已更新
- 2026年2月24日
- 分配 CNA
- GitHub_M
- 观察到的证据
- 2026年8月25日
初级CVSS
9.8/ 10严重
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H0.9%
低 · 未来 30 天
- 百分位
- 58.1%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
Ormar 是一个用于 Python 的异步迷你 ORM。在 0.9.9 至 0.22.0 版本中,执行聚合查询时,Ormar ORM 会将用户提供的列名直接传递给 `sqlalchemy.text()` 来构造 SQL 表达式,且不进行任何验证或清理。`QuerySet` 类中的 `min()` 和 `max()` 方法接受任意字符串输入作为列参数。虽然 `sum()` 和 `avg()` 通过 `is_numeric` 类型检查得到了部分保护,该检查会拒绝不存在的字段,但 `min()` 和 `max()` 完全跳过了此验证。因此,攻击者控制的字符串会被作为原始 SQL 嵌入到聚合函数调用中。任何未经授权的用户都可以利用此漏洞,通过注入子查询作为列参数,读取整个数据库的内容,包括与所查询模型无关的表。0.23.0 版本包含此漏洞的补丁。
来源
2深入剖析 Python Ormar ORM 中的一个严重 SQL 注入漏洞——复现、修复与测试
CVE-2026-26198 的概念验证漏洞利用,演示该漏洞及其影响。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。