CVE-2026-110725
NiskieCVSS 3.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 16 - wyżej niż 16% wszystkich znanych CVE
Streszczenie
W bibliotece fast-uri (parser URI dla Node.js) w wersjach przed 2.4.8, 3.0.0–3.1.8 i 4.0.0–4.2.2 funkcje serialize(), normalize() lub resolve() z opcją suffix mogą wygenerować względne odwołanie zawierające nieescapowany dwukropek w pierwszym segmencie ścieżki. Może to spowodować ponowne sparsowanie ciągu jako absolutnego URI ze schematem, np. javascript:, data: lub vbscript:.
Ocena ryzyka
Aplikacja przetwarzająca wynik jako URI może zamienić nieszkodliwe dane wejściowe w aktywny URL, co stanowi wektor cross-site scripting.
Rekomendacja
Zaktualizuj fast-uri do wersji 2.4.8, 3.1.9 lub 4.2.3 bądź nowszej; jako obejście unikaj opcji suffix dla niezaufanych danych lub koduj dwukropek w pierwszym segmencie ścieżki.
Inne podatności w fast-uri
Zobacz wszystkie- CVE-2026-110306Średnie
fast-uri to parser i serializator URI zgodny z RFC 3986 dla Node.js. W wersjach przed 2.4.8, od 3.0.0 do 3.1.8 oraz od 4.0.0 do 4.2.2 funkcja fast-uri dekoduje procentowo komponent schematu za pomocą przestarzałej funkcji globalnej unescape() przed walidacją, co może prowadzić do przekształcenia nieaktywnego ciągu w wykonywalny URL javascript, data lub vbscript, tworząc wektor przechowywanego lub odbitego XSS. Luka jest naprawiona w wersjach 2.4.8, 3.1.9 i 4.2.3.
- CVE-2026-110180Średnie
fast-uri to parser i serializator URI zgodny z RFC 3986 dla Node.js. W wersjach od 2.4.2 do 2.4.7, od 3.1.3 do 3.1.8 oraz od 4.0.1 do 4.2.2 funkcja canonicalizeHost() dla schematów HTTP przekazuje sparsowany host do parsera URL WHATWG i przyjmuje jego nazwę hosta bez sprawdzenia, czy parser zużył całe dane wejściowe jako host, co może prowadzić do cichego przepisania autorytetu. Może to pozwolić na obejście polityk opartych na hoście, takich jak listy blokad, filtrowanie loopback, walidacja przekierowań lub routing proxy. Luka jest naprawiona w wersjach 2.4.8, 3.1.9 i 4.2.3.
- CVE-2026-110095Niskie
W bibliotece fast-uri (parser URI dla Node.js) w wersjach przed 2.4.8, 3.0.0–3.1.8 i 4.0.0–4.2.2 funkcje normalize() i serialize() stosują usuwanie segmentów kropkowych RFC 3986 do ścieżki względnego odwołania, mimo że algorytm ten jest zdefiniowany tylko dla docelowej ścieżki podczas rozwiązywania. W rezultacie wiodący segment katalogu nadrzędnego może zostać usunięty, a odwołanie względne dokumentu może stać się względne wobec katalogu głównego.
- CVE-2026-86818Średnie
fast-uri to parser URI zgodny z RFC 3986 dla Node.js używany przez Fastify i ajv, który w wersji 4.1.3 dodał parser schematu mailto. W wersjach 4.1.3 i 4.1.4 parser mailto porównuje nazwy pól zapytania z nazwami zarezerwowanymi to, subject i body, gdy nazwa jest jeszcze zakodowana procentowo, a dekoduje ją dopiero przy zapisie jako nagłówek ogólny. W efekcie zakodowana procentowo nazwa pola zarezerwowanego nie jest rozpoznawana przy parsowaniu, ale jest ponownie emitowana jako dosłowna nazwa pola przy serializacji URI. Aplikacja, która waliduje, loguje lub wyświetla listę odbiorców z pierwszego parsowania, a następnie serializuje URI i wysyła je, może w ten sposób nieświadomie uzyskać odbiorcę wybranego przez atakującego, a pola subject i body mogą zostać przemycone w tym samym cyklu.
- CVE-2026-86472Średnie
fast-uri to parser URI zgodny z RFC 3986 dla Node.js używany przez Fastify i ajv. W wersjach przed 2.4.7, od 3.0.0 do 3.1.7 oraz od 4.0.0 do 4.1.4 fast-uri zamienia host na małe litery przed jego dekodowaniem procentowym, więc zakodowany procentowo wielki oktet, np. %41, dekoduje się do dosłownego A, które nigdy nie zostaje zamienione na małą literę. Dla referencji względem schematu, takiej jak //host, nie ma schematu, więc kanonizacja hosta, która normalnie by to naprawiła, nie uruchamia się, a parse, normalize i equal dają różne wyniki dla tego samego hosta. Aplikacja podejmująca decyzję o hoście z rozróżnianiem wielkości liter na podstawie wyniku fast-uri, np. lista dozwolonych lub zabronionych hostów porównująca sparsowany host lub używająca equal, może zostać ominięta przez zakodowany procentowo wielki oktet, a ponieważ nazwy hostów w DNS i HTTP są niewrażliwe na wielkość liter, omijający zapis i tak trafia do hosta, który kontrola miała blokować.
- CVE-2026-84394Wysokie
fast-uri akceptuje host zawierający niezbalansowany lub źle umieszczony nawias bez zgłaszania błędu. Host zaczynający się od nawiasu otwierającego, ale nie kończący się nawiasem zamykającym, nie jest walidowany jako literał IP ani kanonizowany jako nazwa domeny, więc parse() zwraca go jako host z błędem undefined, podczas gdy URL Node i klienci HTTP zbudowani na nim rozwiązują ten sam ciąg do innego hosta. Aplikacja, która odczytuje sparsowany host do podejmowania decyzji, np. denylist SSRF, allowlist przekierowań lub routing proxy, a następnie przekazuje oryginalny URL do klienta HTTP, ocenia swoją politykę względem ciągu, który nie jest hostem, do którego trafia żądanie. Ten sam host jest przenoszony przez normalize, equal i resolve. Dotyczy to wersji fast-uri 2.4.5, 3.1.6 i 4.1.3; naprawiono w 2.4.6, 3.1.7 i 4.1.4, gdzie parse() zgłasza nieprawidłowy host dla każdego hosta zawierającego nawias, ale niebędącego poprawnym literałem IPv6.
- CVE-2026-84292Wysokie
fast-uri serializuje komponent portu URI bez walidacji. Przy ponownym składaniu authority, userinfo i host są escapowane, ale port jest dołączany dosłownie, więc wartość portu niebędąca ciągiem cyfr może wstrzyknąć separatory authority, co prowadzi do przekierowania na host kontrolowany przez atakującego. Dotyczy to wersji przed 2.4.6, od 3.0.0 przed 3.1.7 i od 4.0.0 przed 4.1.4.
- CVE-2026-76172Wysokie
Parser URI fast-uri dla Node.js nieprawidłowo przetwarza schemat z zakodowanymi procentowo ukośnikami, co pozwala atakującemu na manipulację hostem i obejście list dozwolonych. Podatność dotyczy wersji 2.3.1 do 2.4.4, 3.0.0 do 3.1.5 oraz 4.0.0 do 4.1.2.
- CVE-2026-75975Wysokie
Parser URI fast-uri dla Node.js nieprawidłowo waliduje adresy IPv6 w nawiasach, co pozwala na przekształcenie złośliwego hosta w inny adres IPv6, np. loopback lub adres prywatny. Podatność dotyczy wersji 2.3.1 do 2.4.4, 3.0.0 do 3.1.5 oraz 4.0.0 do 4.1.2.
- CVE-2026-75931Wysokie
Parser URI fast-uri dla Node.js nie kanonizuje hosta w referencjach względnych schematu, co prowadzi do niespójności między funkcjami parse, resolve, normalize i equal. Podatność dotyczy wersji 2.4.2 do 2.4.4, 3.1.3 do 3.1.5 oraz 4.0.1 do 4.1.2.
Oryginalny opis (angielski, źródło NVD)
fast-uri is a dependency-free RFC 3986 URI parser and serializer for Node.js. In versions before 2.4.8, from 3.0.0 through 3.1.8, and from 4.0.0 through 4.2.2, when serialize(), normalize(), or resolve() are called with the non-default option reference set to suffix on a reference that has no authority, the emitted relative reference can contain a bare colon in its first path segment without escaping it, even though RFC 3986 forbids that because it makes the string reparse as an absolute URI with a scheme. An application that serializes or normalizes a relative reference with the suffix option and then treats the result as a URI can turn inert input into a live javascript, data, or vbscript URL, a cross-site scripting vector, and the equal() comparison can conflate a scheme-bearing reference with a relative one. Exposure is limited to applications using the non-default suffix reference option. The issue is fixed in fast-uri 2.4.8, 3.1.9, and 4.2.3, and users should upgrade to one of these versions or later. As a workaround, avoid the suffix reference option on untrusted input, or percent-encode a colon in the first path segment of the result before treating it as a URI.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

