CVE-2026-72818
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 42 - wyżej niż 42% wszystkich znanych CVE
Streszczenie
Wyrażenie regularne URLS w nltk/tokenize/casual.py, używane przez TweetTokenizer, zawiera nieograniczoną gałąź domeny, co prowadzi do katastrofalnego cofania się (backtracking) przy przetwarzaniu złośliwych danych wejściowych. Kilka kilobajtów tekstu może spowodować wielominutowe zużycie CPU, co umożliwia atak DoS bez uwierzytelnienia. Wersja 3.10.1 ogranicza powtarzanie etykiet.
Ocena ryzyka
Usługi używające TweetTokenizer lub casual_tokenize do tokenizacji niezaufanych tekstów mogą zostać zablokowane na długi czas przez pojedyncze żądanie, co prowadzi do wyczerpania zasobów i przerw w działaniu.
Rekomendacja
Zaktualizuj bibliotekę NLTK do wersji 3.10.1 lub nowszej, która zawiera poprawkę ograniczającą powtarzanie etykiet w wyrażeniu regularnym.
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)
The URLS regular expression in nltk/tokenize/casual.py, compiled into TweetTokenizer.WORD_RE and applied by TweetTokenizer.tokenize, contains a naked-domain branch whose domain-label prefix [a-z0-9]+(?:[.\-][a-z0-9]+)* is unbounded. Input consisting of many alternating label separators can be partitioned in exponentially many ways, and because the branch also requires a trailing top-level domain that such input never supplies, the engine explores those partitions before failing at each offset. A few kilobytes of input therefore consumes seconds to minutes of single-threaded CPU, and the HANG_RE substitution performed before matching does not collapse the pattern. TweetTokenizer is intended for tokenizing untrusted social-media text, so any service that applies it, or the module-level casual_tokenize, to submitted text can be stalled per request without authentication. Version 3.10.1 bounds the label repetition.

