CVE-2026-69198
ŚrednieCVSS 6.9Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 20 - wyżej niż 20% wszystkich znanych CVE
Streszczenie
Biblioteka ip-address dla JavaScript w wersjach od 10.1.1 do 10.2.2 zawiera podatność, w której metody klasyfikacji specjalnego przeznaczenia (isLoopback, isPrivate, isLinkLocal, isCGNAT, isMulticast, isUnspecified, isBroadcast, isULA, getType) opierają się na isInSubnet, który zwraca false, gdy maska podsieci adresu jest krótsza niż maska zakresu referencyjnego. Dodanie sufiksu CIDR, takiego jak /0, powoduje, że wszystkie te metody zgłaszają wewnętrzny adres jako nieistotny, podczas gdy correctForm() i address nadal zwracają rzeczywisty wewnętrzny cel. Aplikacje używające tych sprawdzeń do decyzji o zaufaniu sieciowym, np. filtry SSRF, mogą traktować wewnętrzny cel jako zewnętrzny i zezwolić na żądanie. Problem został naprawiony w wersji 10.2.2.
Ocena ryzyka
Ryzyko polega na obejściu zabezpieczeń SSRF, co może pozwolić atakującemu na wysyłanie żądań do wewnętrznych zasobów, które powinny być zablokowane, prowadząc do wycieku danych lub dalszych ataków.
Rekomendacja
Zaleca się natychmiastową aktualizację biblioteki ip-address do wersji 10.2.2 lub nowszej. Należy również przejrzeć kod aplikacji pod kątem użycia tych metod i rozważyć dodatkowe walidacje.
Inne podatności w ip-address
Zobacz wszystkie- CVE-2026-69192Wysokie
ip-address to biblioteka JavaScript do parsowania i manipulacji adresami IPv4 i IPv6. Przed wersją 10.3.1, Address4 akceptuje oktet z wiodącym zerem i dekoduje go jako dziesiętny, podczas gdy WHATWG URL host parser, inet_aton i getaddrinfo dekodują wiodące zero jako ósemkowy. Powoduje to niezgodność między biblioteką a stosem sieciowym co do tego, który host nazywa dany string. Na przykład new Address4('012.0.0.1') zgłasza correctForm() jako 12.0.0.1 i isPrivate() jako false, ale fetch('http://012.0.0.1/') łączy się z 10.0.0.1.
- CVE-2026-54272Średnie
Biblioteka ip-address w JavaScript w wersjach 10.1.1 do 10.2.0 jest podatna na SSRF poprzez błędną klasyfikację adresów IPv4-mapped/NAT64 IPv6. Adresy te są błędnie klasyfikowane jako Global unicast, co omija sprawdzenia isLoopback, isUnspecified, isMulticast, isLinkLocal i isULA. Dla adresów IPv4-mapped jest to osiągalne na każdym hoście z podwójnym stosem, a dla NAT64 wymaga bramy NAT64/DNS64.
- CVE-2026-42338Średnie
Biblioteka ip-address przed wersją 10.1.1 nie koduje HTML-em treści kontrolowanej przez atakującego przed osadzeniem jej w zwracanych stringach HTML. Aplikacja przekazująca niezaufane dane do Address6 i renderująca wyniki jako HTML jest podatna na cross-site scripting.
Oryginalny opis (angielski, źródło NVD)
ip-address is a library for parsing and manipulating IPv4 and IPv6 addresses in JavaScript. From 10.1.1 until 10.2.2, every special-use classification method is built on isInSubnet, which short-circuits to false whenever the address's own subnet mask is shorter than the reference range's mask. That mask comes verbatim from the CIDR suffix on the parsed input, so appending a suffix such as /0 suppresses classification entirely: isLoopback(), isPrivate(), isLinkLocal(), isCGNAT(), isMulticast(), isUnspecified(), isBroadcast(), isULA(), and getType() all report an internal address as unremarkable, while correctForm() and address still return the real internal target. An application that builds a network trust-boundary decision on these checks, for example a filter intended to block Server-Side Request Forgery, or SSRF, may therefore treat an internal target as external and allow the request. The underlying bit comparison is correct, and mask(n) already returns the first n bits of the full parsed address independently of subnetMask; the defect is solely that the containment guard sits in the classification path. This issue is fixed in version 10.2.2.

