CVE-2026-115866
Niskie ryzyko· EPSS 15%Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 15 - wyżej niż 15% wszystkich znanych CVE
Streszczenie
W Starlet w wersjach od 0.20 przed 0.33 dla Perla występuje wyczerpanie CPU przez backtracking wyrażeń regularnych przy dekodowaniu ciał żądań w formacie chunked. Wiersz rozmiaru chunka jest dopasowywany jako ciąg cyfr hex, następnie .* i CRLF; ciąg zakończony samym LF, a potem CRLF, nigdy nie pasuje, a silnik ponawia dopasowanie raz na każdą cyfrę, więc czas rośnie z kwadratem długości ciągu; nic nie ogranicza długości ciągu, który może obejmować kilka odczytów.
Ocena ryzyka
Zdalny atakujący może zająć worker na około minutę czasu CPU jednym żądaniem o rozmiarze 128 KiB, zanim aplikacja zostanie wywołana.
Rekomendacja
Zaktualizuj Starlet do wersji 0.33 lub nowszej.
Inne podatności w Starlet
Zobacz wszystkie- CVE-2026-116128Niskie ryzyko· EPSS 15%
W Starlet w wersjach od 0.20 przed 0.33 dla Perla występuje wyczerpanie pamięci przez nieograniczone buforowanie przy dekodowaniu ciał żądań w formacie chunked. Dekoder dodaje każdy odczyt do jednego bufora nieprzetworzonego wejścia; nic nie ogranicza długości wiersza rozmiaru chunka, więc wiersz bez CRLF powiększa bufor tak długo, jak klient wysyła dane, a limit czasu odczytu restartuje się po każdym odczycie; dane dużego chunka są również trzymane w buforze do nadejścia całego chunka.
- CVE-2026-116127Niskie ryzyko· EPSS 5%
W Starlet w wersjach przed 0.33 dla Perla odpowiedzi na żądania HEAD zawierają ciało, co psuje kolejną odpowiedź na połączeniu trwałym lub potokowym. Metoda żądania nie jest przekazywana do writera odpowiedzi, więc ciało zwrócone przez aplikację dla HEAD jest wysyłane; z Plack::Middleware::Head ciało jest puste, ale odpowiedź HTTP/1.1 bez nagłówka Content-Length i tak otrzymuje terminator kodowania chunked; odpowiedzi ze statusem 204 lub 304 są również wysyłane z ciałem.
- CVE-2026-115865Niskie ryzyko· EPSS 15%
W Starlet w wersjach przed 0.33 dla Perla żądanie deklarujące duży Content-Length może zabić worker przez wyczerpanie pamięci. Ciało żądania jest czytane w pętli, która prosi sysread o całą pozostałą zadeklarowaną długość naraz; Perl powiększa bufor odczytu do tego rozmiaru przed nadejściem jakichkolwiek danych, więc długość większa niż dostępna pamięć powoduje zakończenie workera nieprzechwytywalnym błędem braku pamięci, zanim aplikacja zostanie wywołana.
- CVE-2026-40561Średnie
Starlet w wersji do 0.31 dla Perla pozwala na przemyt żądań HTTP (HTTP Request Smuggling) poprzez nieprawidłowe pierwszeństwo nagłówków. Starlet błędnie priorytetyzuje "Content-Length" nad "Transfer-Encoding: chunked", gdy oba nagłówki są obecne w żądaniu HTTP, podczas gdy zgodnie z RFC 7230 3.3.3 to Transfer-Encoding powinien mieć pierwszeństwo.
Oryginalny opis (angielski, źródło NVD)
Starlet versions from 0.20 before 0.33 for Perl allow CPU exhaustion via regular expression backtracking when decoding chunked request bodies. A chunk-size line is matched as a run of hex digits, then .* and a CRLF. A run followed by a bare LF and then a CRLF can never match, and the engine retries the match once for each digit, so the time taken grows with the square of the run length. Nothing limits the length of the run, which can span several reads. A remote attacker can occupy a worker for about a minute of CPU time with one 128 KiB request, before the application is called.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

