CVE-2026-19566
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 27 - wyżej niż 27% wszystkich znanych CVE
Streszczenie
Net::CIDR::Set przed wersją 0.23 dla Perla pozwala na wyczerpanie pamięci i nieprawidłowe zakresy zestawów przez nieograniczone długości prefiksów IPv6. Funkcja _encode akceptuje dowolną długość prefiksu, co prowadzi do alokacji ogromnych ciągów i tablic, a także do błędów w dopasowywaniu zakresów.
Ocena ryzyka
Przekazanie niezaufanych danych do funkcji contains() lub add() może doprowadzić do wyczerpania pamięci procesu, co może spowodować awarię aplikacji.
Rekomendacja
Zaktualizuj Net::CIDR::Set do wersji 0.23 lub nowszej i unikaj przekazywania niezaufanych danych do funkcji contains() i add().
Inne podatności w Net::CIDR::Set
Zobacz wszystkie- CVE-2026-49942Wysokie
Biblioteka Net::CIDR::Set dla Perla w wersjach do 0.20 nie waliduje poprawnie masek sieciowych. Znaki Unicode, takie jak cyfry arabsko-indyjskie, lub znaki niebędące cyframi w masce są ignorowane, co może pozwolić na akceptowanie większych sieci niż zamierzono. Ponadto wiodące zera są akceptowane, ale traktowane jako dziesiętne zamiast ósemkowych, co może prowadzić do nieporozumień co do akceptowalnych sieci.
- CVE-2026-49941Wysokie
Podatność w bibliotece Net::CIDR::Set dla Perla (wersje do 0.20) polegająca na braku walidacji adresów IP. Metoda add wywołuje _encode, która dla nieprawidłowych adresów prowadzi do nieskończonej rekurencji, powodując odmowę usługi.
- CVE-2026-49940Średnie
Biblioteka Net::CIDR::Set dla Perla w wersjach do 0.20 akceptuje nie-ASCII adresy IP i maski sieciowe. Cyfry Unicode, takie jak arabsko-indyjska jedynka (U+0661), były akceptowane, ale nieprawidłowo parsowane jako liczby, co mogło pozwolić maskom sieciowym na akceptowanie większych sieci.
Oryginalny opis (angielski, źródło NVD)
Net::CIDR::Set versions before 0.23 for Perl allow memory exhaustion and malformed set ranges via unbounded IPv6 prefix lengths. The _encode method accepts any prefix length matching `(0|[1-9][0-9]*)` and passes it to _width2bits(), which builds the mask as `'1' x ($width + 8)`, one character per bit. The _inc() method then unpacks the packed mask into a Perl array of one scalar per byte, so the prefix length alone sets the allocation size: `::/100000000` builds a 100 MB string and a 12.5 million element array. The value being tested is parsed, not just the configured ranges: contains() builds a set from its argument, and _guess_coder() tries the IPv4 coder and then the IPv6 coder, so an IPv4-only set expands an oversized IPv6 prefix length before the mixed address width check rejects it. Any caller that passes untrusted input to contains() or add() can exhaust process memory. A prefix length above 128 is also stored as a range that does not match the requested block: 2001:db8::/129 stringifies back unchanged, contains() of its own base address returns false, and removing it from a set drops the base address while the set still prints as covering it.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

