CSIRTS // UNIFIED SECURITY ADVISORY FEEDSYS ● ONLINE · POWERED BY INTELFUSIONS.COM

GHSA-wjv6-jcfj-mf9r: `datamodel-code-generator` vulnerable to code injection via unescaped carriage return in `--extra-template-data` `comment` field

highCVSS 7.8CVE-2026-54654
Summary datamodel-code-generator is vulnerable to code injection when a developer passes an --extra-template-data file whose comment value contains a literal \r (carriage return). The comment variable is rendered into a Python # comment in six built-in templates with no line-terminator escaping. Python's tokenizer treats a bare CR as a physical-line terminator (see Python language reference — Physical lines), so the comment ends at the \r and the text after it is parsed as Python, including, when the CR is followed by suitable indentation, as a statement within the class body that follows on the next template line. Details The vulnerable templates each contain # {{ comment }} with no escaping: - src/datamodel_code_generator/model/template/TypeAliasAnnotation.jinja2:12 and :19 - src/datamodel_code_generator/model/template/TypeAliasType.jinja2:12 and :19 - src/datamodel_code_generator/model/template/TypeStatement.jinja2:12 and :19 - src/datamodel_code_generator/model/template/pydantic_v2/BaseModel.jinja2:4 - src/datamodel_code_generator/model/template/pydantic_v2/RootModel.jinja2:19 - src/datamodel_code_generator/model/template/pydantic_v2/RootModelTypeAlias.jinja2:13 The pydantic_v2/BaseModel.jinja2:4 site is representative: 2 class {{ class_name }}({{ base_class }}):{% if comment is defined %} # {{ comment }}{% endif %} When the developer-supplied extras file populates comment for a model, the value reaches the template via DataModel.extra_template_data (set in src/datamodel_code_generator/model/base.py:736-742) and Jinja2 interpolates it raw. None of the templates use comment_safe, escape_docstring, or any other line-terminator filter. PoC Complete self contained POC is available at my secret gist: https://gist.github.com/thegr1ffyn/8ad6b8cb3cc2be9d3a0144aeb6896a3f Impact - Who's affected: any developer or CI pipeline that runs datamodel-codegen --extra-template-data <file> where the extras file is influenced by attacker-controlled input. Realistic scenar

Details

Source
GitHub Security Advisories (INTL · database · site)
Severity
high — CVSS 7.8
Published
2026-07-28
Last updated
2026-07-28
Exploitation
Not in CISA KEV at last sync

Original advisory: https://github.com/advisories/GHSA-wjv6-jcfj-mf9r

Exploitation outlook

EPSS (FIRST.org) estimates each CVE’s probability of exploitation in the next 30 days — here is the CSIRTS.com read on those numbers.

Referenced CVEs

CVECSIRTS overviewExternal
CVE-2026-54654coverage & exploitation statusNVD · CVE.org

Same CVEs, other sources

How other CERTs, PSIRTs and databases cover the vulnerabilities in this advisory.

More from GitHub Security Advisories