CVE-2026-86251
ŚrednieCVSS 5.9Streszczenie
Wersje h3 przed 1.15.9 zawierają podatność na traversal ścieżek w narzędziu serveStatic. Błąd podwójnego dekodowania pozwala, aby ścieżka żądania zawierająca podwójnie zakodowane sekwencje kropek (np. %252e%252e) została zdekodowana do %2e%2e, co przeżywa funkcję resolveDotSegments(), ponieważ ta funkcja sprawdza tylko dosłowne znaki '.'. Gdy wynikowy identyfikator zasobu jest rozwiązywany przez backendy oparte na URL (CDN, S3, magazyn obiektów), %2e%2e jest interpretowane jako '..' zgodnie z RFC 3986, umożliwiając traversal ścieżek do odczytu dowolnych plików z backendu.
Ocena ryzyka
Ryzyko polega na możliwości odczytu dowolnych plików z backendów takich jak CDN, S3 czy magazyny obiektów, co może prowadzić do ujawnienia poufnych danych przechowywanych w tych systemach.
Rekomendacja
Zaleca się aktualizację pakietu h3 do wersji 1.15.9 lub nowszej, która zawiera poprawkę eliminującą problem podwójnego dekodowania.
Inne podatności w h3
Zobacz wszystkie- CVE-2026-86253Średnie
Pakiet npm h3 w wersjach do 2.0.1-rc.14 zawiera podatność na traversal ścieżek w funkcji serveStatic(). W środowisku Node.js event.url.pathname nie jest normalizowany, więc zakodowane procentowo segmenty kropek (%2e%2e) są przekazywane do decodeURI() i dekodowane do sekwencji ../ bez sanityzacji. Zdalny, nieuwierzytelniony atakujący może wysyłać spreparowane żądania do punktów końcowych obsługiwanych przez serveStatic(), aby odczytać dowolne pliki poza zamierzonym katalogiem statycznym. Poprawiono w wersjach 1.15.6 i 2.0.1-rc.15.
- CVE-2026-86252Średnie
Wersje h3 przed 1.15.9 nie sanityzują znaków powrotu karetki w polach danych i komentarzy EventStream, co pozwala atakującym na wstrzykiwanie dowolnych zdarzeń SSE poprzez umieszczenie niesanityzowanych powrotów karetki. Atakujący mogą wstrzykiwać dyrektywy typu zdarzenia, dzielić pojedyncze wywołania push na wiele zdarzeń parsowanych przez przeglądarkę lub uciekać z pól komentarzy, aby wstrzykiwać dane, omijając wcześniejszą poprawkę CVE, która dotyczyła tylko wstrzykiwania znaków nowej linii.
- CVE-2026-86250Wysokie
Wersje h3 przed 2.0.1-rc.18 nie walidują liczby fragmentów (chunk count) parsowanej z wartości cookie kontrolowanych przez użytkownika w funkcjach setChunkedCookie() i deleteChunkedCookie(). Atakujący może wysłać spreparowany nagłówek cookie z bardzo dużą liczbą fragmentów, co wywołuje pętlę czyszczenia o złożoności O(n²) i zawiesza proces serwera.
- CVE-2026-86205Średnie
Wersje h3 przed 2.0.1-rc.18 zawierają podatność na otwarte przekierowanie w narzędziu redirectBack(), które nie sanityzuje ścieżek względnych protokołu w ścieżce nagłówka Referer. Atakujący mogą skonstruować URL o tym samym pochodzeniu z segmentem ścieżki z podwójnym ukośnikiem, który przechodzi walidację pochodzenia, ale generuje nagłówek Location interpretowany przez przeglądarki jako przekierowanie względne protokołu do zewnętrznej domeny.
Oryginalny opis (angielski, źródło NVD)
h3 versions before 1.15.9 contain a path traversal vulnerability in the serveStatic utility. A double-decoding flaw allows a request path containing double-encoded dot sequences (e.g. %252e%252e) to be decoded to %2e%2e, which survives resolveDotSegments() because that function only checks for literal '.' characters. When the resulting asset ID is resolved by URL-based backends (CDN, S3, object storage), %2e%2e is interpreted as '..' per RFC 3986, enabling path traversal to read arbitrary files from the backend.

