`datamodel-code- generator ' é vulnerável à injeção de código ao gerar modelos Python a partir de um esquema GraphQL controlado pelo atacante. Uma descrição de um tipo de União, escrita no formulário de string regular (`"..."`) com um escape literal `\r`, é traduzida em um comentário Python `#` por um Jinja 2 filtro que manipula apenas `\n`. O tokenizer do Python trata um CR desnudo como um terminador de linha física, então o comentário termina no `\r` e o texto depois de ser analisado como Python de nível de módulo. O código injetado executa- se no momento `importa' do `.py' gerado, no contexto de qualquer consumidor que importa o modelo. Não são necessárias bandeiras especiais do CLI. Isto afeta versões `>= 0.25.0, < 0.60.1 ` e está corrigido em ` 0.60.1 `. A saída vulnerável foi gerada pelos modelos GraphQL Union. - `src/datamodel_code_generator/model/ template/ UnionTypeStatement.jinja 2 ` - ` src/datamodel_code_generator/model/ template/UnionTypeAliasAnnotation.jinja 2 ` - ` src/datamodel_code_generator/model/ template/ UnionTypeAliasType.jinja 2 `.

Antes de ` 0.60.1 `, as descrições da União foram renderizadas como comentários do Python usando lógica equivalente a `# {{ descrição. replace('\n', '\n#') }}'. O Jinja 2 ` replace` filtro manipulado `\n`, mas nu `\r` não foi normalizado. A análise lexical do Python trata CR, LF e CRF como terminadores de linha física. Como resultado, um esquema malicioso do GraphQL pode fazer com que o comentário gerado do Python termine cedo e emite texto controlado pelo atacante como código do módulo Python. O valor `description` atinge a geração da União a partir de `graphql-core` até `description=union_object.description`. Os valores regulares da cadeia GraphQL podem conter escapes `\r`, e `graphql-core` preserva esse valor. As cadeias de bloqueio não são afetadas da mesma forma porque os terminais de linha são normalizados antes de atingir a geração de código.

Um atacante que pode fornecer ou influenciar um esquema GraphQL processado por `datamodel-code- generator` pode causar a geração arbitrária de código Python no arquivo de saída. Esse código executaria com os privilégios do processo de importação do modelo gerado. Isto pode afetar desenvolvedores, pipelines CI ou aplicativos que executam o `datamodel- codegen --input- type graphql` em esquemas não confiados ou de terceiros GraphQL e, em seguida, importar o módulo Python gerado. Não são necessários modelos personalizados, bandeiras especiais do CLI ou opções de referência remotas.

Atualizar para `generador de código- modelo de dados` ` 0.60.1 ` ou mais tarde. A correção normaliza o transporte retorna nas descrições GraphQL Union antes de traduzi- las como comentários do Python, por isso o texto injetado permanece dentro do bloco de comentários.

A correção aplica `coment_safe` às descrições da União GraphQL antes da renderização do modelo. Ele normaliza o CRLF e o CR descartado para LF, para que os modelos de comentários da União mantenham toda a descrição dentro do bloco de comentários Python gerado. Enviado por: Hamza Haroon (thegr 1 xintose). Registro de aconselhamento: GHSA- j 884 - q 54 q- mmx 3. Identificadores relacionados: CVE- 2026 - 54621.

Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 28 T 21: 35: 49.000 Z e lista a sua última modificação como 2026 - 07 - 28 T 21: 35: 49.000 Z. Severidade: ALTAMENTE. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H.

Software afetado e informações de versão: PyPI pacote de dados-modelo-code-generator — ECOSYSTEM: introduzido 0.25.0, corrigido 0.60.1. Classificação e evidência: identificadores de fraqueza CWE- 1336, CWE- 94. O registro contém 3 suporte de referências nestes tipos: WEB, PACKAGE.