CVE-2025-14009
WysokieCVSS 8.8Prawdopodobieństwo exploitacji (EPSS)
Podwyższone ryzykoPercentyl 52 - wyżej niż 52% wszystkich znanych CVE
Streszczenie
Krytyczna podatność w komponencie pobierania NLTK (nltk/nltk) we wszystkich wersjach. Funkcja _unzip_iter w nltk/downloader.py używa zipfile.extractall() bez walidacji ścieżek, co pozwala atakującym na wstrzyknięcie złośliwych pakietów ZIP. Po rozpakowaniu i zaimportowaniu plików Python (np. __init__.py) dochodzi do zdalnego wykonania kodu.
Ocena ryzyka
Atakujący może przejąć pełną kontrolę nad systemem, uzyskując dostęp do plików, sieci oraz możliwość utrwalenia się w środowisku. Ryzyko jest krytyczne, ponieważ podatność nie wymaga uwierzytelnienia i może być wykorzystana zdalnie.
Rekomendacja
Natychmiast zaktualizuj NLTK do wersji, która zawiera poprawkę zabezpieczającą. Do czasu aktualizacji unikaj pobierania i rozpakowywania pakietów z niezaufanych źródeł oraz rozważ tymczasowe wyłączenie funkcji pobierania.
Inne podatności w NLTK
Zobacz wszystkie- CVE-2026-81723Niskie
NLTK przed wersją 3.10.3 zawiera podatność na wyczerpanie CPU w XMLCorpusView._read_xml_fragment(). Atakujący może dostarczyć złośliwe pliki XML, powodując poważne zużycie procesora i DoS.
- CVE-2026-80206Średnie
NLTK przed wersją 3.10.3 zawiera podatność ReDoS w module tgrep. Funkcja _tgrep_node_action kompiluje wyrażenia regularne dostarczone przez użytkownika i wykonuje je bez walidacji, co może prowadzić do katastrofalnego cofania się i zablokowania procesu Pythona.
- CVE-2026-80205Wysokie
Wersje NLTK przed 3.10.0 zawierają podatność na odmowę usługi przez wyrażenia regularne w metodach Text.findall() i TokenSearcher.findall(), które akceptują wyrażenia regularne dostarczone przez użytkownika bez walidacji lub limitu czasu. Atakujący mogą dostarczyć spreparowane wzorce regex, które powodują katastrofalne cofanie się, prowadząc do nieograniczonego zużycia procesora i odmowy usługi dla wszystkich użytkowników procesu Pythona.
- CVE-2026-79675Krytyczne
NLTK przed wersją 3.10.3 nie waliduje opcji JVM przekazywanych przez parametr options w funkcji java(), co pozwala atakującym na wstrzykiwanie niebezpiecznych flag JVM. Atakujący mogą dostarczyć złośliwe opcje, takie jak -agentpath, -javaagent lub @argfile, do klas opakowujących Stanford, aby osiągnąć wykonanie dowolnego kodu.
- CVE-2026-79657Krytyczne
NLTK przed wersją 3.10.3 zawiera podatność na zdalne wykonanie kodu w loaderach pickle, które ufają całym przestrzeniom nazw modułów zamiast konkretnym bezpiecznym funkcjom. Atakujący mogą stworzyć złośliwe ładunki pickle, które wywołują niebezpieczne funkcje, takie jak ReppTokenizer._execute czy numpy.f2py.crackfortran.myeval, podczas ładowania modeli lub artefaktów tokenizera.
- CVE-2026-78683Krytyczne
NLTK przed wersją 3.10.0 zawiera podatność na niebezpieczną deserializację pickle w metodzie TransitionParser.parse(). Deserializacja odbywa się z domyślnym ustawieniem restricted=False, co pozwala na wykonanie dowolnego kodu Pythona podczas ładowania spreparowanego pliku modelu.
- CVE-2026-81727Wysokie
NLTK przed wersją 3.10.3 zawiera podatność na obejście ograniczeń systemu plików w metodach Downloader.download i Downloader.incr_download, umożliwiającą atakującym nadpisywanie plików poza katalogiem instalacyjnym przez istniejące twarde dowiązania. Atakujący z dostępem do zapisu w współdzielonym katalogu downloadera może tworzyć twarde dowiązania do plików poza katalogiem, które są nadpisywane podczas normalnej ekstrakcji pakietów.
- CVE-2026-81726Wysokie
NLTK do wersji 3.10.3 zawiera podatność na przechodzenie po ścieżkach (path traversal) w API artefaktów modeli, która omija egzekwowanie pathsec poprzez użycie surowych operacji na plikach na ścieżkach kontrolowanych przez wywołującego. Atakujący mogą czytać lub zapisywać pliki poza dozwolonymi katalogami sandboxa przez API TransitionParser, AveragedPerceptron, PerceptronTagger i maxent, gdy pathsec jest włączone.
- CVE-2026-81725Niskie
NLTK przed wersją 3.10.3 zawiera podatność na regular expression denial of service w Pl196xCorpusReader. Atakujący może dostarczyć złośliwe bloki TEI z wieloma niepasującymi tagami otwierającymi, powodując nadmierne zużycie CPU.
- CVE-2026-81724Średnie
NLTK przed wersją 3.10.3 zawiera podatność na niekontrolowaną rekurencję w nltk.featstruct.FeatStructReader, która pozwala nieuwierzytelnionym atakującym na spowodowanie odmowy usługi poprzez dostarczenie głęboko zagnieżdżonych danych wejściowych struktury cech. Atakujący mogą tworzyć trywialne ładunki z zagnieżdżonymi nawiasami, które przekraczają limit rekurencji Pythona i wywołują nieobsłużony błąd RecursionError, powodując awarię aplikacji przetwarzających struktury cech lub gramatyki cech dostarczane przez użytkownika.
Oryginalny opis (angielski, źródło NVD)
A critical vulnerability exists in the NLTK downloader component of nltk/nltk, affecting all versions. The _unzip_iter function in nltk/downloader.py uses zipfile.extractall() without performing path validation or security checks. This allows attackers to craft malicious zip packages that, when downloaded and extracted by NLTK, can execute arbitrary code. The vulnerability arises because NLTK assumes all downloaded packages are trusted and extracts them without validation. If a malicious package contains Python files, such as __init__.py, these files are executed automatically upon import, leading to remote code execution. This issue can result in full system compromise, including file system access, network access, and potential persistence mechanisms.

