CVE-2026-86253
ŚrednieCVSS 5.9Streszczenie
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.
Ocena ryzyka
Ryzyko polega na możliwości odczytu dowolnych plików z serwera, co może prowadzić do ujawnienia poufnych danych, takich jak pliki konfiguracyjne, klucze czy dane użytkowników.
Rekomendacja
Zaleca się natychmiastową aktualizację pakietu h3 do wersji 1.15.6 lub 2.0.1-rc.15 (lub nowszej), która zawiera poprawkę eliminującą podatność.
Inne podatności w h3
Zobacz wszystkie- 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-86251Średnie
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.
- 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 (npm package) versions <= 2.0.1-rc.14 contain a path traversal vulnerability in serveStatic(). On Node.js deployments, event.url.pathname is not normalized, so percent-encoded dot segments (%2e%2e) are passed to decodeURI() and decoded to ../ sequences without sanitization. An unauthenticated remote attacker can send crafted requests to endpoints served by serveStatic() to read arbitrary files outside the intended static directory. Fixed in 1.15.6 and 2.0.1-rc.15.

