CVE-2026-123535
ŚrednieCVSS 4.2Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 7 - wyżej niż 7% wszystkich znanych CVE
Streszczenie
Tornado w wersji przed 6.6 nie waliduje argumentu max_age w RequestHandler.set_cookie (wywoływanego również przez set_signed_cookie, set_secure_cookie i clear_cookie), co pozwala na wstrzyknięcie dodatkowych atrybutów Set-Cookie. Gdy aplikacja przekazuje dane pod wpływem atakującego jako max_age, atakujący może osadzić atrybuty takie jak Domain, Path lub Secure, aby rozszerzyć zakres ciasteczka na katalogi nadrzędne lub inne subdomeny.
Ocena ryzyka
Atakujący może rozszerzyć zakres ciasteczka na inne subdomeny lub ścieżki, co może prowadzić do przejęcia sesji lub wycieku danych uwierzytelniających.
Rekomendacja
Zaktualizuj Tornado do wersji 6.6 lub nowszej. Upewnij się, że dane wejściowe przekazywane jako max_age są walidowane i nie pochodzą od użytkownika.
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-123534Średnie
Tornado w wersji przed 6.6 zawiera podatność typu path traversal w RequestHandler.static_url() i get_version(), która pozwala atakującym na hashowanie plików poza static_path przy użyciu sekwencji ../. Atakujący kontrolujący dane wejściowe przekazywane do static_url() mogą uzyskać hashe SHA-512 czytelnych plików, aby potwierdzić ich istnienie, lub odwołać się do /dev/zero, aby zablokować pętlę zdarzeń na czas nieokreślony.
- CVE-2026-116578Niskie
Tornado to framework webowy i biblioteka asynchroniczna dla Pythona. Przed wersją 6.6 szablony URL w tornado.web.RedirectHandler mogą umieszczać podstawienia przechwycone przez wyrażenia regularne w miejscach, gdzie spreparowane ścieżki żądań zmieniają schemat przekierowania lub lokalizację sieciową. Może to prowadzić do otwartego przekierowania na domenie aplikacji, wykorzystywanego w atakach phishingowych.
- CVE-2026-116577Średnie
Tornado, framework webowy i biblioteka asynchroniczna dla Pythona, w wersjach przed 6.6 akceptuje przestarzałe składanie nagłówków HTTP (obsolete line folding) i wielokrotnie łączy krótkie linie kontynuacji, co powoduje kwadratowe zużycie CPU na wątku IOLoop. Nieuwierzytelniony klient może przesłać blok nagłówków z wieloma kontynuacjami przed uruchomieniem kodu aplikacji, blokując inne połączenia obsługiwane przez proces. Koszt rośnie wraz z max_header_size, a wpływ dotyczy wyłącznie dostępności.
- CVE-2026-115927Średnie
W bibliotece Tornado przed wersją 6.6.0 dekodowanie kodowania chunked HTTP/1.1 przetwarza dane bez oddawania sterowania pętli zdarzeń. Zdalny nieuwierzytelniony atakujący może wysłać miliony jednobajtowych fragmentów, aby zmonopolizować pętlę zdarzeń i zablokować wszystkie inne połączenia obsługiwane przez proces. Problem dotyczy także SimpleAsyncHTTPClient przy odczycie odpowiedzi od złośliwego serwera.
- 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.
Oryginalny opis (angielski, źródło NVD)
Tornado before 6.6 does not validate the max_age argument of RequestHandler.set_cookie (also called by set_signed_cookie, set_secure_cookie, and clear_cookie), allowing injection of additional Set-Cookie attributes. When an application passes attacker-influenced input as max_age, an attacker can embed attributes such as Domain, Path, or Secure to widen the cookie's scope to parent paths or other subdomains.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

