Narzędzie datamodel-code-generator w wersjach od 0.52.1 do 0.60.2 pozwala na wykonanie dowolnego kodu Python poprzez niezabezpieczoną interpolację danych z parametru --extra-template-data do dekoratorów @field_validator. Podatność jest groźna, ponieważ złośliwy kod wykonuje się automatycznie w momencie importu wygenerowanego modelu Pydantic v2.
▸ Pokaż oryginał (EN)
datamodel-code-generator generates Pydantic v2 models, dataclasses, TypedDict, and msgspec.Struct from OpenAPI, JSON Schema, GraphQL, Avro, Protobuf, and raw JSON, YAML, or CSV. From 0.52.1 until 0.60.2, datamodel-code-generator interpolates validators from --extra-template-data in src/datamodel_code_generator/model/pydantic_v2/base_model.py through _process_validators into @field_validator decorators without safe validation, allowing Python code execution when the generated Pydantic v2 model is imported. This issue is fixed in version 0.60.2.
Narzędzie przetwarza dane przekazane przez użytkownika za pomocą flagi --extra-template-data i interpoluje je jako walidatory w pliku base_model.py przez funkcję _process_validators, bez odpowiedniej walidacji lub sanityzacji danych wejściowych. W rezultacie kontrolowane przez atakującego dane trafiają bezpośrednio do dekoratorów @field_validator w generowanym kodzie Python. Gdy tak wygenerowany model Pydantic v2 zostaje zaimportowany przez ofiarę lub system CI/CD, osadzony kod Python jest wykonywany automatycznie.
Atakujący może doprowadzić do wykonania dowolnego kodu Python na maszynie ofiary (RCE) z jej uprawnieniami, co może skutkować ujawnieniem danych, modyfikacją systemu lub dalszym ruchem bocznym (lateral movement) w środowisku.
Należy zaktualizować datamodel-code-generator do wersji 0.60.2 lub nowszej, w której podatność została naprawiona. Patch dostępny jest w repozytorium projektu na GitHub.
datamodel-code-generator w wersjach od 0.52.1 do 0.60.1 (włącznie)
Podatność dotyczy scenariusza, w którym atakujący kontroluje dane wejściowe do parametru --extra-template-data, a wygenerowany kod jest następnie importowany przez inny proces lub użytkownika. Szczegóły techniczne oraz commit naprawiający dostępne są w repozytorium GitHub projektu (commit a43d029).
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:HKoxudaxi Datamodel Code Generator
APPKoxudaxi0.52.1 – 0.60.2 (bez)
Powiązane podatności
datamodel-code-generator: wstrzyknięcie kodu Python przez default_factory
SSRF w datamodel-code-generator poprzez nieblokowane zewnętrzne $ref
Path traversal w datamodel-code-generator umożliwia odczyt dowolnych plików lokalnych
SSRF przez DNS rebinding w datamodel-code-generator (przed 0.63.0)
Code injection w datamodel-code-generator poprzez rozszerzenia schematu