Podatność w narzędziu datamodel-code-generator (wersje przed 0.62.0) pozwala na odczyt dowolnych plików lokalnego systemu plików poprzez nieodpowiednio ograniczone rozwiązywanie referencji JSON Schema ($ref). Jest to szczególnie groźne, gdy narzędzie przetwarza niezaufane schematy dostarczone przez zewnętrznych użytkowników.
▸ 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. Prior to 0.62.0, datamodel-code-generator resolves JSON Schema $ref targets in src/datamodel_code_generator/parser/jsonschema.py through is_url and _get_ref_body without containing file:// or ../ traversal references to the input directory and without honoring --no-allow-remote-refs, allowing arbitrary local file reads. This issue is fixed in version 0.62.0.
Narzędzie datamodel-code-generator podczas przetwarzania schematów JSON Schema rozwiązuje referencje $ref w pliku src/datamodel_code_generator/parser/jsonschema.py za pośrednictwem funkcji is_url oraz _get_ref_body. Funkcje te nie weryfikują, czy ścieżki docelowe zawierają sekwencje path traversal (np. ../) lub odwołania do schematów URI file://, co umożliwia wyjście poza katalog wejściowy. Dodatkowo opcja --no-allow-remote-refs nie jest respektowana, co pozwala atakującemu na wskazanie dowolnego pliku w systemie poprzez spreparowany schemat.
Atakujący może odczytać dowolne pliki z lokalnego systemu plików serwera lub środowiska, na którym uruchomiono narzędzie, co może prowadzić do ujawnienia poufnych danych, takich jak klucze prywatne, konfiguracje czy dane uwierzytelniające.
Należy zaktualizować datamodel-code-generator do wersji 0.62.0 lub nowszej, w której problem został naprawiony zgodnie z informacjami producenta.
datamodel-code-generator w wersjach przed 0.62.0
Poprawka została wprowadzona w commicie 2ff4a72b4550a2b2069754c5b075b1655067e5fb i opublikowana w wersji 0.62.0. Szczegóły dostępne w security advisory GHSA-8359-h9fx-j6v9 na platformie GitHub.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:NKoxudaxi Datamodel Code Generator
APPKoxudaxi< 0.62.0
Powiązane podatności
datamodel-code-generator: wstrzyknięcie kodu Python przez default_factory
RCE w datamodel-code-generator poprzez niezabezpieczoną interpolację walidatorów
SSRF w datamodel-code-generator poprzez nieblokowane zewnętrzne $ref
SSRF przez DNS rebinding w datamodel-code-generator (przed 0.63.0)
Code injection w datamodel-code-generator poprzez rozszerzenia schematu