Narzędzie datamodel-code-generator zawiera podatność typu SSRF, która pozwala atakującemu ominąć zabezpieczenie blokujące dostęp do sieci prywatnych (allow_private_network=False) poprzez atak DNS rebinding. Umożliwia to nieautoryzowany dostęp do wewnętrznych usług infrastruktury.
▸ 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.63.0, datamodel-code-generator validates a URL host once in src/datamodel_code_generator/http.py through get_body, _validate_url_for_fetch, and _get_ips_from_host, but then lets httpx resolve the host again for the connection, allowing DNS rebinding to bypass allow_private_network=False and reach internal services. This issue is fixed in version 0.63.0.
Narzędzie waliduje host podanego URL jednorazowo w funkcjach get_body, _validate_url_for_fetch oraz _get_ips_from_host, a następnie przekazuje rozwiązanie nazwy domenowej do biblioteki httpx, która samodzielnie wykonuje kolejne zapytanie DNS przy nawiązywaniu połączenia. Atakujący może skonfigurować serwer DNS tak, aby przy pierwszym zapytaniu zwracał publiczny adres IP (przechodzący walidację), a przy kolejnym — prywatny adres IP wskazujący na zasoby wewnętrznej sieci. W efekcie zabezpieczenie blokujące dostęp do sieci prywatnych zostaje pominięte, a żądanie trafia do niezamierzonego, wewnętrznego celu (DNS rebinding).
Atakujący bez uwierzytelnienia może skierować narzędzie do wysyłania żądań HTTP do wewnętrznych usług i zasobów sieciowych niedostępnych publicznie, uzyskując nieautoryzowany odczyt poufnych danych z infrastruktury wewnętrznej. Możliwe jest również ograniczone modyfikowanie stanu wewnętrznych usług przez interakcję z ich API.
Należy zaktualizować datamodel-code-generator do wersji 0.63.0 lub nowszej, w której problem został naprawiony. Patch dostępny jest w repozytorium producenta (commit 25c8b7e497419eb20b230fa3318c04f9bebc5a6f).
datamodel-code-generator w wersjach wcześniejszych niż 0.63.0
Podatność opisana w ramach GitHub Security Advisory GHSA-vx7x-vcc2-c44g. Publiczny materiał demonstracyjny (proof-of-concept) dostępny jest pod adresem wskazanym w referencjach (gist.github.com/thegr1ffyn).
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:L/A:NKoxudaxi Datamodel Code Generator
APPKoxudaxi< 0.63.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
Path traversal w datamodel-code-generator umożliwia odczyt dowolnych plików lokalnych
Code injection w datamodel-code-generator poprzez rozszerzenia schematu