CVE-2026-116127
Niskie ryzyko· EPSS 5%Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 5 - wyżej niż 5% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Potokowe żądania GET i HEAD utrzymują połączenie otwarte nawet przy wyłączonym keep-alive (domyślnie); klient lub proxy czytające połączenie biorą nadmiarowe bajty za początek następnej odpowiedzi, co może zdesynchronizować proxy współdzielące połączenie między klientami.
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-115866Niskie ryzyko· EPSS 15%
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.
- 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 before 0.33 for Perl send a body in responses to HEAD requests, corrupting the next response on a persistent or pipelined connection. The request method is not passed to the response writer, so whatever body the application returns for a HEAD request is sent. With Plack::Middleware::Head the body is empty, but an HTTP/1.1 response without a Content-Length header still gets the chunked encoding terminator. Responses with status 204 or 304 are also sent with their body. Pipelined GET and HEAD requests keep the connection open even when keep-alive is disabled, which is the default. A client or proxy reading the connection takes the extra bytes as the start of the next response, which may desynchronize a proxy that shares the connection across clients.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

