Quando gerar modelos a partir de um esquema XML (`-- input- file- type xmlschema`), `datamodel- code- generator` resolve ` `, ` `, ` ` e ` ` `schemaLocation` atributos contra o diretório fonte e lê o alvo sem restrição para o diretório de entrada/ base. Um atacante que controla o XSD de entrada pode ler arquivos arbitrários através de `../ ' via transversal ou um caminho absoluto, e o conteúdo do esquema incluído (nomes de tipos, restrições, enumerações) é dobrado na saída gerada. Ao contrário do caminho JSON-Schema `$ref`, não há controle ` allow_remote_refs` para o XSD, então `-- no- allow-remote-refs` não o mitiga. Este é um problema de canalização / divulgação de informações não autêntico que pode ser alcançado na configuração padrão. Os passeios do analisador XSD incluem crianças de estilo e lê cada `schemaLocation` com apenas uma verificação `is_file()` (`src/datamodel_code_generator/parser/xmlschema.py`): ````python location = (source_dir / schema_location).resolve() #.resolve() colapsa../, escapa da base se a localização estiver ou não visível.is_file(): continue included_root = self._parse_schema(_read_xml_text(location, self.encoding), localização) ````.

`schema_location` é controlado pelo atacante e `_read_xml_text` faz `path.read_bytes()`. Como `(source_dir / schema_location.resolve()` normaliza `...` e aceita caminhos absolutos, o alvo resolvido pode ser qualquer arquivo que o processo possa ler; não há contenção `is_relative_to(base_path)` (contrate o ramo local do JSON-Schema HTTP, que o executa). A mesma leitura não delimitada ocorre tanto durante a detecção de versão como durante o passe principal de processamento de inclusão, de modo que o conteúdo incluído é incorporado no módulo gerado. Vetores relacionados que foram testados e não se aplicam (o sddlib `xml.etree.ElementTree` é usado): a leitura do arquivo XXE de entidade externa não ocorre (O ElementTree não busca entidades externas), e a expansão da entidade " bilhões de risas" é rejeitada pelo limite de amplificação do expatriado do CPython. Reprodutor autónomo (cria um dir temporal, executa o gerador, limpa): 1 fyn/ c 7096 b 797926348875 d 888652867 eeb 4 (`poc.py`).

Reprodução manual mínima. ``` bash mkdir -p /tmp/x/secret /tmp/x/proj cat > /tmp/x/secret/leak.xsd Gato EOF > /tmp/x/proj/atack.xsd EOF datamodel-codegen --input /tmp/x/proj/atack.xsd --input-file-type xmlschema --no- allow-refs-remote --output /tmp/x/out.py grep LEAK_ 5150 /tmp/x/out.py # conteúdo de fora do dir do projeto aparece no código gerado ``` Um `schemaLocation='/abs/path/leak.xsd' ' absoluto funciona de forma idêntica. Arquivo local arbitrário leitura / caminho transversal (CWE- 22 ) levando à divulgação de informações (CWE- 200 ). Qualquer aplicativo, conduto CI ou serviço multi- locatário que gera modelos a partir de um XSD fornecido pelo atacante e expõe (retorna, logs, commits, renderizes) o código gerado é afetado. O atacante pode ler arquivos fora da árvore de entrada cujos dados são endereçáveis como conteúdo XSD (outros esquemas, configurações), e a própria leitura é um primitivo arbitrário- de acesso a arquivos. Nenhuma bandeira a atenua. O atacante controla apenas o esquema de entrada; não é necessária nenhuma autenticação ou privilégios especiais. (Os bytes de arquivos que não são válidos XML são lidos no processo, mas não ecoados literalmente, uma vez que a análise falha; a divulgação literal se aplica aos dados em formato XML/ XSD.)

### Remediação sugerida. Rejeitar alvos resolvidos de `schemaLocation` que não são `resolvidos.is_relative_to(self.base_path)`, e trazer XSD inclui sob a mesma política de referência remota/externa aplicada para o JSON-Schema `$ref`. ### Estado do mantenedor. Confirmado por revisão de mantenedor e testes de regressão. O RP de correção privada foi fundido e lançado em ` 0.62.0 `: 442 q-. 2 j 6 p-. 642 g/ interromper/ 1.

Resumo: rejeite as metas do 'schemaLocation' do XSD que se resolvem fora do caminho base de entrada, incluindo caminhos relativos de travessia e absolutos. Estado de lançamento: corrigido em ` 0.62.0 `. Suporte de entrada do esquema XML foi introduzido no & ` 0.59.0 `, as versões afetadas são `>= 0.59.0, <= 0.61.0 `.

Validação: `uv run --group test -- extra http pytest test/main/xmlschema/test_main_xmlschema.py` passou localmente; `uv run --group corrige ruff check src/ datamodel_code_generator/parser/xmlschema.py test/main/xmlschema/test_main_xmlschema.py passou. Enviado por: Hamza Haroon (thegr 1 xintose). Registro de aconselhamento: GHSA- 442 q-. 2 j 6 p-. 642 g. Identificadores relacionados: CVE- 2026 - 55390.

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

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