CVE-2025-67725
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 45 - wyżej niż 45% wszystkich znanych CVE
Streszczenie
W Tornado w wersjach 6.5.2 i starszych pojedyncze złośliwe żądanie HTTP może zablokować pętlę zdarzeń serwera na dłuższy czas z powodu metody HTTPHeaders.add. Funkcja gromadzi wartości poprzez konkatenację ciągów, gdy ta sama nazwa nagłówka jest powtarzana, powodując atak typu Denial of Service (DoS) o złożoności O(n²). Problem został naprawiony w wersji 6.5.3.
Ocena ryzyka
Pojedyncze złośliwe żądanie może spowodować, że serwer stanie się nieosiągalny dla innych użytkowników, prowadząc do odmowy usługi.
Rekomendacja
Zaktualizuj Tornado do wersji 6.5.3. Rozważ zmniejszenie wartości max_header_size, jeśli to możliwe, aby ograniczyć wpływ ataku.
Inne podatności w Tornado
Zobacz wszystkie- CVE-2026-103261Średnie
Tornado przed wersją 6.5.9 nie ogranicza liczby pól ciągu zapytania w HTTPServerRequest.__init__, co umożliwia zdalnym atakującym spowodowanie zablokowania pętli zdarzeń poprzez wysyłanie żądań z tysiącami parametrów zapytania. Atakujący mogą wysyłać nieuwierzytelnione żądania GET z nieograniczoną liczbą pól ciągu zapytania, aby pogorszyć czasy odpowiedzi dla wszystkich klientów korzystających z tego samego IOLoop.
- CVE-2026-103263Średnie
Tornado przed wersją 6.5.9 zawiera podatność na traversal ścieżek w StaticFileHandler, która podąża za dowiązaniami symbolicznymi wewnątrz katalogu statycznego bez potwierdzenia, że rozwiązany cel pozostaje w jego obrębie. Gdy wewnątrz katalogu statycznego istnieje dowiązanie symboliczne wskazujące poza katalog statyczny, nieuwierzytelnieni atakujący mogą je wykorzystać do odczytu plików takich jak pliki konfiguracyjne, klucze prywatne i sekrety aplikacji dostępne dla procesu użytkownika.
- CVE-2026-103262Wysokie
Tornado w wersjach przed 6.5.9 zawiera podatność na nieograniczone gromadzenie pamięci w CurlAsyncHTTPClient, która pozwala zdalnym atakującym wywołać odmowę usługi poprzez wysłanie skompresowanej odpowiedzi. Atakujący mogą wysłać bombę dekompresyjną zakodowaną w gzip, która gromadzi się w pamięci bez limitów rozmiaru, powodując zabicie procesu aplikacji przez warunki braku pamięci.
- CVE-2026-91992Średnie
Tornado w wersjach przed 6.5.7 zawiera podatność polegającą na wycieku poświadczeń w CurlAsyncHTTPClient, gdzie uchwyty pycurl są ponownie używane między żądaniami bez prawidłowego czyszczenia stanu. Atakujący mogą uzyskać poufne poświadczenia, wysyłając żądania przez tę samą instancję klienta, co pozwala na utrzymanie certyfikatów TLS lub uwierzytelniania proxy między niepowiązanymi żądaniami.
- CVE-2026-91991Średnie
Tornado w wersjach przed 6.5.8 zawiera niekompletną poprawkę na wstrzykiwanie atrybutów cookie, która pozwala atakującym wstrzykiwać dowolne atrybuty cookie poprzez przekazywanie pisanych wielką literą lub przestarzałych argumentów słów kluczowych do set_cookie. Atakujący mogą osadzać dane rozdzielane średnikami w parametrach pisanych wielką literą, takich jak Domain, Path lub SameSite, aby obejść walidację i zmodyfikować atrybuty bezpieczeństwa cookie.
- CVE-2026-91990Wysokie
Tornado przed wersją 6.5.8 zawiera podatność na amplifikację pamięci w funkcji parse_multipart_form_data, która dzieli dane multipart przed walidacją limitu max_parts. Atakujący mogą wysyłać spreparowane żądania multipart z wieloma częściami, tworząc duże tymczasowe listy, co wyczerpuje pamięć serwera i powoduje denial of service.
- CVE-2024-58384Średnie
W bibliotece Tornado przed wersją 6.4.1 występuje podatność na wstrzyknięcie CRLF w klasie CurlAsyncHTTPClient, która nie odrzuca znaków powrotu karetki i przesunięcia wiersza w nagłówkach żądań. Atakujący może wstrzyknąć sekwencje CRLF do wartości nagłówków, aby wstrzyknąć dowolne nagłówki lub skonstruować całkowicie nowe żądania HTTP.
- CVE-2024-14029Wysokie
Tornado przed wersją 6.4.1 ignoruje zduplikowane nagłówki Transfer-Encoding: chunked, traktując żądania jako niemające treści i parsując treść chunked jako kolejne żądanie. Atakujący mogą wykorzystać tę niespójność, gdy Tornado działa za proxy, do przeprowadzenia przemytu żądań HTTP.
- CVE-2023-54397Wysokie
Tornado przed wersją 6.3.3 zawiera podatność na przemyt żądań HTTP wynikającą z nieprawidłowego parsowania nagłówków Content-Length akceptującego niestandardowe znaki. Atakujący mogą wysyłać spreparowane żądania HTTP z tymi znakami, aby obejść walidację proxy i przemycić żądania, gdy aplikacja działa za niektórymi proxy.
- CVE-2026-82397Wysokie
Tornado przed wersją 6.5.8 nie ogranicza liczby pól podczas parsowania danych formularza typu application/x-www-form-urlencoded. Niezautoryzowane żądanie z milionami pól może zablokować jednowątkową pętlę zdarzeń i opóźnić wszystkie połączenia.
Oryginalny opis (angielski, źródło NVD)
Tornado is a Python web framework and asynchronous networking library. In versions 6.5.2 and below, a single maliciously crafted HTTP request can block the server's event loop for an extended period, caused by the HTTPHeaders.add method. The function accumulates values using string concatenation when the same header name is repeated, causing a Denial of Service (DoS). Due to Python string immutability, each concatenation copies the entire string, resulting in O(n²) time complexity. The severity can vary from high if max_header_size has been increased from its default, to low if it has its default value of 64KB. This issue is fixed in version 6.5.3.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

