🟠 高危 | CVE-2026-54653 — datamodel-code-generator generates Pydantic v2 mod...
🟠 《高危安全漏洞:CVE-2026-54653》
CVSS 评分: 高危(8.8) 状态: Received 发布时间: 2026-07-28
漏洞简介
CVE-2026-54653 是一个存在于 datamodel-code-generator 工具中的安全漏洞。该工具用于从 OpenAPI、JSON Schema、GraphQL、Avro、Protobuf 以及原始 JSON、YAML 或 CSV 格式的数据生成 Pydantic v2 模型、dataclasses、TypedDict 和 msgspec.Struct 代码。
在版本 0.17.0 至 0.60.2(不含 0.60.2) 中,该工具在处理 JSON Schema 解析时存在缺陷。具体来说,在 src/datamodel_code_generator/parser/jsonschema.py 文件中的 JsonSchemaObject.init 和 get_field_extras 方法中,工具会保留攻击者控制的 default_factory 值。这些值随后会被直接嵌入到生成的代码中,例如 Field(default_factory=...) 或 field(default_factory=...)。
当用户导入(import)由该工具生成的模型文件时,这些被注入的 default_factory 值会作为 Python 表达式被执行。这本质上是一个 代码注入(code injection) 漏洞,攻击者可以通过精心构造的输入数据(如恶意 JSON Schema 文件)在受害者环境中执行任意 Python 代码。
该漏洞涉及以下 CWE 分类:
- CWE-94:代码生成控制不当(Code Injection)
- CWE-1336:模板引擎中注入不当(Improper Neutralization of Special Elements in Output Used by a Downstream Component)
影响范围
- 受影响版本:datamodel-code-generator 版本 0.17.0 至 0.60.2(不含 0.60.2)
- 不受影响版本:版本 0.60.2 及更高版本
- 修复版本:0.60.2
风险分析
根据 CVSS 3.1 评分,该漏洞的向量为 AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H,基础评分为 8.8(高危)。
- 攻击向量(Attack Vector):网络(Network),攻击者可以通过网络发送恶意数据(如恶意 JSON Schema 文件)触发漏洞。
- 攻击复杂度(Attack Complexity):低(Low),攻击者无需特殊条件即可利用。
- 权限要求(Privileges Required):无(None),攻击者无需任何身份验证或权限。
- 用户交互(User Interaction):需要(Required),受害者需要导入(import)由该工具生成的恶意模型文件。
- 影响范围(Scope):未改变(Unchanged),漏洞影响仅限于受影响的组件。
- 机密性影响(Confidentiality Impact):高(High),攻击者可读取系统上的任意文件或敏感数据。
- 完整性影响(Integrity Impact):高(High),攻击者可修改系统文件或数据。
- 可用性影响(Availability Impact):高(High),攻击者可导致系统服务中断或拒绝服务。
攻击后果:
- 远程代码执行(Remote Code Execution, RCE):攻击者可以通过构造包含恶意
default_factory表达式的 JSON Schema 文件,诱导开发者或自动化流程使用 datamodel-code-generator 生成模型代码。当该代码被导入时,恶意表达式立即执行,攻击者即可在受害者机器上执行任意 Python 代码。 - 数据泄露:攻击者可以窃取环境变量、源代码、数据库凭证等敏感信息。
- 横向移动:在 CI/CD 流水线或开发环境中,攻击者可以利用该漏洞进一步渗透内部网络。
- 供应链攻击:如果生成的模型代码被分发到其他项目或作为库发布,所有下游用户都可能受到影响。
缓解措施:
- 立即将 datamodel-code-generator 升级至 0.60.2 或更高版本。
- 在升级前,避免处理来自不可信来源的 JSON Schema 或 OpenAPI 文件。
- 对生成的模型代码进行人工审查,特别是检查
Field(default_factory=...)和field(default_factory=...)部分是否存在可疑表达式。
🔍 技术细节
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-54653 |
| CVSS 评分 | 8.8 🟠 |
| 严重程度 | 高危 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
| CWE 分类 | CWE-94,CWE-1336 |
| 发布时间 | 2026-07-28 |
| 最后更新 | 2026-07-28 |
| 状态 | Received |
| 数据来源 | security-advisories@github.com |