CVE-2026-115878
WysokieCVSS 7.8Streszczenie
W bibliotece Stanza (Stanford NLP dla Pythona) w wersjach od 1.14.0 do 1.15.0 załadowanie dostarczonego przez atakującego checkpointu lematyzatora może wykonać dowolny kod. Plik stanza/models/lemma/trainer.py przechowuje pos_dict jako skompresowane gzipem bajty pickle, a Trainer.load przekazuje zdekompresowany strumień do nieograniczonego pickle.loads. Ścieżka jest osiągalna podczas budowy potoku przez kontrolowany przez wywołującego parametr lemma_model_path, przed rozpoczęciem wnioskowania.
Ocena ryzyka
Złośliwy checkpoint modelu może doprowadzić do wykonania dowolnego kodu w kontekście procesu przetwarzającego dane. Ryzyko dotyczy środowisk ładujących niezaufane modele Stanza.
Rekomendacja
Zaktualizuj bibliotekę Stanza do wersji 1.15.0 lub nowszej. Ładuj wyłącznie modele z zaufanych źródeł i weryfikuj ich integralność.
Inne podatności w Stanza
Zobacz wszystkie- CVE-2026-59974Wysokie
Stanza to biblioteka NLP w Pythonie do tokenizacji, segmentacji zdań, NER i parsowania wielu języków. W wersjach przed 1.14.0 funkcja stanza.resources.common.unzip przekazuje pobrane archiwa do zipfile.ZipFile.extractall bez walidacji ścieżek elementów, co pozwala złośliwemu archiwum z wpisami przechodzenia do katalogu nadrzędnego zapisywać pliki poza docelowym katalogiem modeli i potencjalnie umożliwić wykonanie kodu. Problem naprawiono w wersji 1.14.0.
- CVE-2026-54499Wysokie
Podatność w bibliotece Stanza NLP umożliwia wykonanie dowolnego kodu przez złośliwy plik modelu .pt. Mechanizm ładowania modeli próbuje najpierw bezpiecznego torch.load z weights_only=True, ale w przypadku błędu pickle.UnpicklingError wywołanego przez atakującego przełącza się na niebezpieczny tryb weights_only=False, co pozwala na wykonanie dowolnego kodu podczas wczytywania modelu.
Oryginalny opis (angielski, źródło NVD)
Stanza is a Stanford NLP Python library for tokenization, sentence segmentation, NER, and parsing of many human languages. From 1.14.0 until 1.15.0, loading an attacker-supplied lemmatizer checkpoint can execute arbitrary code because stanza/models/lemma/trainer.py stores pos_dict as gzip-compressed pickle bytes and Trainer.load passes the decompressed stream to unrestricted pickle.loads. The outer torch.load call uses weights_only=True, but the nested bytes are treated as a primitive and are not inspected by that allowlist. The path is reachable during pipeline construction through a caller-influenced lemma_model_path, before inference begins. This issue is fixed in version 1.15.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

