Biblioteka Diffusers (HuggingFace) przed wersją 0.38.0 zawiera podatność typu TOCTOU (CWE-367), która pozwala na obejście mechanizmu ochronnego trust_remote_code. Atakujący może doprowadzić do wykonania złośliwego kodu Python z repozytorium Hub bez jawnego zezwolenia użytkownika.
▸ Pokaż oryginał (EN)
Diffusers is the a library for pretrained diffusion models. Prior to 0.38.0, Diffusers' DiffusionPipeline.from_pretrained flow can bypass the trust_remote_code guard because download() validates model_index.json and custom pipeline code before later loading from a cached folder that can change, allowing a Hub repository with custom .py pipeline code to execute through the custom pipeline flow without passing custom_pipeline or trust_remote_code=True. This issue is fixed in version 0.38.0.
Podatność wynika z luki czasowej (time-of-check to time-of-use) w przepływie DiffusionPipeline.from_pretrained. Podczas pobierania modelu funkcja download() waliduje plik model_index.json oraz niestandardowy kod pipeline przed jego pobraniem, jednak późniejsze ładowanie odbywa się już z lokalnego folderu cache, który w międzyczasie mógł ulec zmianie. Dzięki temu repozytorium Hub zawierające złośliwe pliki .py może zostać wykonane przez mechanizm custom pipeline bez konieczności podania przez użytkownika parametrów custom_pipeline ani trust_remote_code=True. Skuteczne wykorzystanie wymaga interakcji użytkownika (UI:R) oraz spełnienia specyficznych warunków wyścigu (AC:H).
Atakujący może uzyskać pełną kontrolę nad systemem użytkownika — podatność umożliwia poufność, integralność i dostępność danych (C:H/I:H/A:H) poprzez wykonanie dowolnego kodu Python w kontekście procesu ładującego model.
Należy zaktualizować bibliotekę Diffusers do wersji 0.38.0 lub nowszej. Poprawka dostępna jest w oficjalnym repozytorium GitHub pod tagiem v0.38.0. Do czasu aktualizacji zaleca się unikanie ładowania modeli z niezaufanych repozytoriów HuggingFace Hub.
Biblioteka HuggingFace Diffusers w wersjach poprzedzających 0.38.0, korzystająca z przepływu DiffusionPipeline.from_pretrained do ładowania modeli z repozytorium HuggingFace Hub.
Podatność zgłoszona i naprawiona w ramach programu bezpieczeństwa GitHub (GHSA-7wx4-6vff-v64p). Szczegóły techniczne dostępne w GitHub Security Advisory oraz w issue #13446 i pull request #13448 w repozytorium huggingface/diffusers.
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:HHuggingface Diffusers
APPHuggingface< 0.38.0
Powiązane podatności
Diffusers is the a library for pretrained diffusion models. Prior to 0.38.0, a trust_remote_code bypass in Di...
Diffusers is the a library for pretrained diffusion models. Prior to 0.38.0, diffusers 0.37.0 allows remote c...
RCE w Huggingface Transformers — obejście trust_remote_code w LightGlue
Niebezpieczna deserializacja w LeRobot — RCE przez gRPC bez uwierzytelnienia
Sandbox escape i RCE w Huggingface Smolagents (local_python_executor)