Wersje biblioteki NLTK starsze niż 3.10.0-rc1 zawierają krytyczną podatność typu Path Traversal 1. NLTK (Natural Language Toolkit) to popularny zestaw modułów Pythona, używany w badaniach i komercyjnych projektach z zakresu przetwarzania języka naturalnego 2. Luka pozwala atakującemu na odczyt dowolnych plików z systemu, na którym uruchomiona jest aplikacja wykorzystująca podatną wersję biblioteki 3.
Problem dotyczy sposobu, w jaki funkcja nltk.data.load() przetwarza specjalnie spreparowane ścieżki URL 4. Błąd w logice walidacji wejścia umożliwia ominięcie zabezpieczeń i dostęp do zasobów poza wyznaczonym katalogiem. Aktualizacja do najnowszej wersji jest jedynym skutecznym sposobem ograniczenia tego zagrożenia.
TL;DR
- Produkt: NLTK (Natural Language Toolkit), biblioteka Python.
- Wektor: Path Traversal w funkcji
nltk.data.load()przy użyciu schematunltk:. 4 - CVE-ID: CVE-2026-54293.
- Podsumowanie IoC: Brak typowych wskaźników kompromitacji (IoC). Zagrożenie polega na możliwości wykorzystania luki w kodzie. Operator może odczytać dowolny plik, np.
/etc/passwdlub pliki konfiguracyjne aplikacji, poprzez spreparowanie ścieżki z zakodowanymi znakami../. - Kogo dotyczy: Polskie software house’y, zespoły data science, instytucje badawcze i firmy tworzące rozwiązania oparte o AI/ML, które korzystają z biblioteki NLTK w wersjach starszych niż 3.10.0-rc1. 1
- Pierwszy ruch reagowania: Natychmiastowa aktualizacja biblioteki NLTK do wersji
3.10.0-rc1lub nowszej we wszystkich środowiskach (deweloperskich, testowych, produkcyjnych).
Wektor ataku
Podatność zidentyfikowana jako CVE-2026-54293 to klasyczny przykład błędu typu „decode-after-check” 5. Oznacza to, że biblioteka najpierw sprawdza dostarczoną przez użytkownika ścieżkę pod kątem niebezpiecznych sekwencji, a dopiero potem ją dekoduje.
Mechanizm ataku jest następujący:
- Atakujący przekazuje do funkcji
nltk.data.load()ścieżkę zasobu w formacie URL, używając schematunltk:. 4 - Ścieżka zawiera znaki traversalu (
../), ale są one zakodowane w formacie URL (np.%2e%2e%2f). 6 - Wbudowane w NLTK wyrażenie regularne
unsafe-pathsprawdza ścieżkę przed zdekodowaniem. 7 Poprawnie blokuje literały takie jak../../../etc/passwd, ale przepuszcza ich zakodowane odpowiedniki 8, co wynika z tego, że zakodowane warianty, takie jak%2fetc%2fpasswd,%2e%2e%2f...i..%2f..%2f, omijają wyrażenie regularne i są następnie dekodowane do rzeczywistej ścieżki systemu plików 6. - Po przejściu walidacji, biblioteka używa funkcji
url2pathname(), która dekoduje sekwencje%xxdo ich właściwych znaków. 7 - W rezultacie zakodowana ścieżka
%2e%2e%2f%2e%2e%2fetc%2fpasswdzostaje zamieniona na../../etc/passwd, co pozwala na wyjście z dozwolonego katalogu i odczyt dowolnego pliku na serwerze, do którego proces ma uprawnienia. 3
Ta technika pozwala ominąć zabezpieczenia opisane w dokumentacji SECURITY.md projektu NLTK. 3 Dla polskich firm, które przetwarzają dane wrażliwe lub dane osobowe podlegające pod RODO (Rozporządzenie o Ochronie Danych Osobowych), ryzyko jest znaczne. Wyciek plików konfiguracyjnych, kluczy API czy baz danych może prowadzić do poważnych incydentów bezpieczeństwa i kar finansowych.
Wskaźniki kompromitacji
Ponieważ jest to luka w oprogramowaniu, a nie aktywna kampania złośliwego oprogramowania, nie ma stałych wskaźników kompromitacji (IoC), takich jak hashe plików czy adresy IP serwerów C2 (Command and Control — serwer kontrolujący zainfekowane maszyny).
Zamiast tego należy skupić się na audycie kodu i logów serwerów aplikacyjnych. Warto szukać prób wywołania funkcji nltk.data.load() z nietypowymi, zakodowanymi ścieżkami, zwłaszcza zawierającymi wielokrotne segmenty przejścia do katalogu nadrzędnego. Nie publikujemy gotowego kodu wykorzystującego lukę. Analiza takich sekwencji w kontekście wywołań API opartych o NLTK może pomóc w wykryciu prób ataku.
Co zrobić w 24-48h
Kroki naprawcze należy podjąć natychmiast, zwłaszcza w środowiskach produkcyjnych.
-
Identyfikacja i aktualizacja: Priorytetem jest zidentyfikowanie wszystkich projektów i systemów używających biblioteki NLTK. Należy sprawdzić pliki
requirements.txt,Pipfile,poetry.locklub inne mechanizmy zarządzania zależnościami. Wszystkie instancje NLTK w wersji starszej niż3.10.0-rc1muszą zostać zaktualizowane. 9pip install --upgrade nltk -
Audyt kodu: Należy przeprowadzić przegląd kodu w poszukiwaniu miejsc, gdzie funkcja
nltk.data.load()jest wywoływana z danymi pochodzącymi z zewnętrznego, niezaufanego źródła (np. parametrów żądania HTTP). Nawet po aktualizacji, jest to dobra praktyka w ramach utwardzania bezpieczeństwa aplikacji. -
Kontekst polski: Polskie firmy z sektora FinTech, MedTech oraz software house’y budujące produkty dla klientów zagranicznych powinny potraktować ten alert priorytetowo. Wyciek danych może naruszyć nie tylko RODO, ale także inne regulacje sektorowe.
-
Analiza logów: Zespoły SOC (Security Operations Center — zespół monitoringu bezpieczeństwa) lub administratorzy powinni przeanalizować historyczne logi aplikacyjne i logi serwerów webowych pod kątem podejrzanych wzorców opisanych w sekcji powyżej. Może to wskazać, czy luka była już wykorzystywana w przeszłości.
-
Weryfikacja środowisk: Nie należy zapominać o środowiskach deweloperskich, testowych i CI/CD. Często są one gorzej chronione, a mogą zawierać klucze dostępowe lub inne wrażliwe dane, które mogą zostać wykradzione przy użyciu tej luki. Rekomendowane podejście nie zastępuje pełnego audytu bezpieczeństwa ani konsultacji ze specjalistami. Jest to pierwszy, niezbędny krok w celu zabezpieczenia systemów.
Źródła
Zobacz też
- Luka w picklescan (CVE-2025-71366) pozwala na RCE w projektach AI
- CVE-2025-51427: RCE w ModelScope. Zagrożenie dla projektów AI
- Joplin: Luka Path Traversal (CVE-2026-22810) pozwala nadpisać pliki
Przypisy
-
Przed wersją 3.10.0-rc1, funkcja nltk.data.load() w NLTK jest podatna na atak path traversal. — nvd.nist.gov › CVE 2026 54293 ↩ ↩2
-
NLTK (Natural Language Toolkit) to zestaw modułów open source Pythona, zbiorów danych i samouczków wspierających badania i rozwój w przetwarzaniu języka naturalnego. — nvd.nist.gov › CVE 2026 54293 ↩
-
Luka pozwala atakującemu ominąć ochronę udokumentowaną w pliku SECURITY.md NLTK i odczytać dowolne pliki z systemu plików. — nvd.nist.gov › CVE 2026 54293 ↩ ↩2 ↩3
-
Luka path traversal występuje poprzez separatory ścieżek zakodowane w URL i segmenty traversalu, gdy używany jest schemat URL ‘nltk:’. — nvd.nist.gov › CVE 2026 54293 ↩ ↩2 ↩3
-
Jest to klasyczna wada typu ‘decode-after-check’ / ‘TOCTOU-style flaw’. — nvd.nist.gov › CVE 2026 54293 ↩
-
Zakodowane warianty, takie jak %2fetc%2fpasswd, %2e%2e%2f… i ..%2f..%2f, omijają wyrażenie regularne i są następnie dekodowane do rzeczywistej ścieżki systemu plików. — nvd.nist.gov › CVE 2026 54293 ↩ ↩2
-
Sprawdzenie wyrażenia regularnego ‘unsafe-path’ jest wykonywane przed tym, jak url2pathname() dekoduje sekwencje %xx. — nvd.nist.gov › CVE 2026 54293 ↩ ↩2
-
Literalne ciągi traversalu, takie jak ../../../etc/passwd, są poprawnie blokowane. — nvd.nist.gov › CVE 2026 54293 ↩
-
Ta luka została naprawiona w wersji 3.10.0-rc1. — nvd.nist.gov › CVE 2026 54293 ↩
// Komentarze ...
Dodaj komentarz