CVE-2026-110678
NieznaneStreszczenie
W bibliotece Cpanel::JSON::XS dla Perla (wersje przed 4.80) funkcja incr_parse buforuje dane wejściowe ponad limit max_size, ponieważ porównuje postęp parsowania, a nie długość bufora. Fragment zaczynający się od bajtu NUL lub wywołanie w kontekście void omija sprawdzenie, co pozwala na nieograniczony wzrost bufora i wyczerpanie pamięci.
Ocena ryzyka
Zdalny atakujący może przesyłać strumień danych do konsumenta incr_parse i wyczerpać pamięć procesu niezależnie od ustawionego limitu max_size, powodując odmowę usługi.
Rekomendacja
Zaktualizuj Cpanel::JSON::XS do wersji 4.80 lub nowszej oraz ogranicz lub waliduj dane wejściowe przesyłane strumieniowo do incr_parse.
Inne podatności w Cpanel::JSON::XS
Zobacz wszystkie- CVE-2026-110688Nieznane
Cpanel::JSON::XS w wersjach od 4.51 przed 4.80 dla Perla pozwala na kwadratowe zużycie CPU przez ponowną walidację pozostałego bufora dla każdej wartości w incr_parse. Przy pierwszym bajcie nie-ASCII w łańcuchu dekoder waliduje UTF-8 od tego miejsca do końca wejścia, a każda wartość ponownie waliduje resztę bufora.
- CVE-2026-110687Nieznane
Cpanel::JSON::XS w wersjach od 4.43 przed 4.80 dla Perla błędnie porządkuje klucze będące łańcuchami bajtów podczas kodowania kanonicznego w utf16_cmp. Gdy dowolny klucz w hashu ma flagę UTF-8, wszystkie klucze są dekodowane jako UTF-8 do porównania, w tym klucze bajtowe zapisywane jako znaki Latin-1.
- CVE-2026-110686Nieznane
Cpanel::JSON::XS w wersjach przed 4.80 dla Perla używa zwolnionych callbacków filtrów, gdy filtr usuwa się podczas dekodowania w decode_hv. Dekodowanie kopiuje callbacki filter_json_object i filter_json_single_key_object bez referencji, więc filtr usuwający ostatni filtr jednokluczowy zwalnia tablicę callbacków w trakcie użycia.
- CVE-2026-110685Nieznane
Cpanel::JSON::XS w wersjach przed 4.80 dla Perla wycieka zdekodowane argumenty wartości tagowanej, gdy jej metoda THAW umiera w decode_tag. Przy allow_tags nazwa klasy i tablica argumentów są zwalniane dopiero po powrocie THAW, więc śmierć THAW pozostawia całą strukturę argumentów zaalokowaną.
- CVE-2026-110684Nieznane
Cpanel::JSON::XS w wersjach od 3.0202 przed 4.80 dla Perla wycieka pamięć i zatrzymuje przeciążone obiekty podczas kodowania wartości jako łańcuchów w encode_stringify. Dla obiektu tablicy lub hasha z przeciążeniem "" (a od 4.20 także obiektu skalarnego) pobierana jest dodatkowa referencja, która nigdy nie jest zwalniana.
- CVE-2026-110682Nieznane
Cpanel::JSON::XS w wersjach od 4.42 przed 4.80 dla Perla pozwala, aby podział wejścia na fragmenty zmieniał zdekodowaną wartość liczb najwyższego poziomu w incr_parse. Bajty 12 dekodują się jako jedna wartość przy wspólnym odczycie, ale jako 1 i 2 przy podziale na dwa odczyty.
- CVE-2026-110681Nieznane
Cpanel::JSON::XS w wersjach przed 4.80 dla Perla używa skalarów interpretera nadrzędnego z obiektu parsera sklonowanego do nowego ithread. Callbacki i bufor parsowania przyrostowego są kopiowane jako surowe wskaźniki, więc parser dziecka używa i później zwalnia skalary należące do rodzica.
- CVE-2026-110680Nieznane
Podatność w bibliotece Cpanel::JSON::XS dla Perla (wersje 4.20 do 4.80) polega na zapisie poza granicami bufora podczas kodowania kanonicznego hasha powiązanego (tied) lub współdzielonego (threads::shared), gdy liczba kluczy wzrośnie między pierwszym a drugim przebiegiem. Może to uszkodzić pamięć stosu lub sterty i doprowadzić do awarii procesu.
- CVE-2026-110677Nieznane
W bibliotece Cpanel::JSON::XS dla Perla (wersje 4.28 do 4.80) opcja dupkeys_as_arrayref powoduje wyciek tablicy zbierającej wartości zduplikowanego klucza w decode_hv — dodatkowa referencja nie jest zwalniana, więc tablica i jej wartości przeżywają zdekodowaną strukturę. Wyciek następuje także przy błędzie dekodowania po napotkaniu zduplikowanego klucza.
- CVE-2026-110676Nieznane
W bibliotece Cpanel::JSON::XS dla Perla (wersje przed 4.80) z opcją allow_bignum liczby w notacji wykładniczej są kodowane jako pełne liczby dziesiętne, co może prowadzić do wyczerpania pamięci. Niewielki tekst, np. [1e30000000], może zostać zakodowany do około 30 MB, ponieważ wykładnik nie jest ograniczany.
Oryginalny opis (angielski, źródło NVD)
Cpanel::JSON::XS versions before 4.80 for Perl allow memory exhaustion by buffering incremental input past max_size in incr_parse. The parser appends each chunk to its buffer. In scalar or list context, it compares max_size with how far it has progressed, not with the buffer length. A chunk that starts with a NUL byte stops the parser before it progresses, and a call in void context skips the check, so the buffer grows without limit. A peer streaming data to an incr_parse consumer can exhaust process memory regardless of max_size.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

