CVE-2026-12372
NiskieCVSS 3.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 17 - wyżej niż 17% wszystkich znanych CVE
Streszczenie
Podatność typu Server-Side Request Forgery (SSRF) istnieje w nltk/nltk w wersji 3.9.4 i w bieżącej gałęzi develop. Funkcja nltk.pathsec.validate_network_url(), mająca zapobiegać SSRF poprzez odrzucanie adresów sieci wewnętrznej, nie odrzuca adresów IP z przestrzeni współdzielonej RFC 6598 (100.64.0.0/10). Dzieje się tak, ponieważ moduł ipaddress w Pythonie nie klasyfikuje takich adresów jako is_private ani is_global, a obecna kontrola sprawdza tylko is_private i kilka jawnych kategorii. Atakujący, który może wpływać na URL przekazywany do pomocników ładowania sieciowego NLTK, może wykorzystać tę podatność, aby aplikacja w trybie ścisłym wysyłała żądania do hostów w przestrzeni współdzielonej, potencjalnie ujawniając niepubliczną infrastrukturę dostępną z hosta aplikacji. Wpływ ogranicza się do ujawnienia poufności w stylu SSRF, bez deklaracji wykonania kodu.
Ocena ryzyka
Atakujący może wykorzystać SSRF do wysyłania żądań do wewnętrznych zasobów w przestrzeni współdzielonej, co może ujawnić niepubliczne usługi i dane.
Rekomendacja
Zaktualizuj NLTK do wersji z poprawką lub ręcznie rozszerz walidację adresów IP o blok 100.64.0.0/10. Ogranicz możliwość wpływania na URL-e przekazywane do NLTK.
Inne podatności w NLTK
Zobacz wszystkie- 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.
- 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-81722Wysokie
NLTK PorterStemmer w wersjach do 3.10.2 (poprawione w 3.10.3) zawiera podatność na odmowę usługi przez nieefektywną złożoność algorytmiczną w metodzie stem(). Funkcja _is_consonant() przegląda wstecz cały ciąg końcowych znaków 'y' przy każdym wywołaniu, a _measure() wywołuje ją dla każdej pozycji rdzenia, co powoduje złożoność O(n^2). Pojedynczy token o długości 20-50 KB składający się z długiego ciągu litery 'y' i pasującego przyrostka (np. 'ness') może zająć CPU na sekundy lub minuty.
- 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.
Oryginalny opis (angielski, źródło NVD)
A Server-Side Request Forgery (SSRF) vulnerability exists in nltk/nltk versions 3.9.4 and the current develop branch. The `nltk.pathsec.validate_network_url()` function, intended to prevent SSRF by rejecting internal network addresses, fails to reject IPs in the RFC 6598 shared address space (`100.64.0.0/10`). This occurs because Python's `ipaddress` module does not classify such addresses as `is_private` or `is_global`, and the current guard only checks `is_private` and a few explicit categories. An attacker who can influence a URL passed to NLTK's network-loading helpers can exploit this vulnerability to make a strict-mode application send requests to shared-address-space hosts, potentially exposing non-public infrastructure reachable from the application host. The impact is limited to SSRF-style confidentiality exposure, with no code execution claimed.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

