CVE-2026-54900
ŚrednieCVSS 6.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 17 - wyżej niż 17% wszystkich znanych CVE
Streszczenie
W bibliotece Oj (Optimized JSON) dla języka Ruby wykryto podatność na uszkodzenie sterty. Gdy klucz obiektu JSON ma dokładnie 65 535 bajtów, dochodzi do obcięcia liczby całkowitej w funkcji form_attr, co powoduje przekazanie ujemnej długości do memcpy i skopiowanie ogromnej ilości danych, prowadząc do awarii procesu. Problem został naprawiony w wersji 3.17.2.
Ocena ryzyka
Atakujący może celowo dostarczyć spreparowany dokument JSON, aby spowodować uszkodzenie pamięci sterty i awarię aplikacji, co prowadzi do odmowy usługi (DoS). W skrajnych przypadkach może to umożliwić zdalne wykonanie kodu.
Rekomendacja
Należy niezwłocznie zaktualizować gem Oj do wersji 3.17.2 lub nowszej. Jeśli aktualizacja nie jest możliwa, należy ograniczyć przetwarzanie niezaufanych danych JSON przez podatną wersję biblioteki.
Inne podatności w Oj
Zobacz wszystkie- CVE-2026-54903Średnie
Podatność w bibliotece Oj (Optimized JSON) dla języka Ruby przed wersją 3.17.2 powoduje uszkodzenie sterty podczas parsowania ciągu JSON dłuższego niż 2 GB. Błąd przepełnienia liczby całkowitej w funkcji buf_append_string prowadzi do kopiowania ogromnej ilości danych poza dozwolony obszar pamięci.
- CVE-2026-54902Średnie
Biblioteka Oj (Optimized JSON) dla Ruby w wersji przed 3.17.2 zawiera podatność Use-After-Free w trybie SAJ. Obiekt Oj::Parser nie chroni buforowanych kluczy (≥35 bajtów) przed garbage collection, a wywołanie zwrotne Ruby w hash_end może zwolnić pamięć klucza, podczas gdy parser C wciąż przechowuje do niego wskaźnik. Prowadzi to do segfaulta, potwierdzonego przez RIP wskazujący na adres 0x4242.
- CVE-2026-54901Średnie
W bibliotece Oj (Optimized JSON) dla języka Ruby wykryto podatność Use-After-Free w trybie normalnym parsera. Problem występuje, gdy garbage collector usunie obiekty klas array_class i hash_class przed ich użyciem, co prowadzi do dereferencji zwolnionej pamięci i segfaulta.
- CVE-2026-54899Średnie
W bibliotece Oj (Optimized JSON) dla języka Ruby wykryto podatność polegającą na użyciu po zwolnieniu pamięci (use-after-free). Wyłączenie opcji symbol_keys na ponownie używanym instancji Oj::Parser powoduje, że wewnętrzna pamięć podręczna kluczy jest zwalniana, ale wskaźnik do niej nie jest zerowany, co prowadzi do odczytu z już zwolnionej pamięci podczas kolejnego parsowania.
- CVE-2026-54898Niskie
W bibliotece Oj (Optimized JSON) dla języka Ruby wykryto podatność na użycie po zwolnieniu (use-after-free) w parserze C. Problem występuje, gdy callback SAJ/SAJ2 modyfikuje parsowany string JSON, powodując ponowną alokację bufora i pozostawienie wiszącego wskaźnika.
- CVE-2026-54897Niskie
Oj (Optimized JSON) to parser JSON i marshaller obiektów spakowany jako gem Ruby. Przed wersją 3.17.2 iteratory Oj::Doc (each_value, each_child, each_leaf) były podatne na użycie po zwolnieniu (use-after-free) sterty. Gdy blok Ruby wywołany podczas iteracji wywołuje doc.close lub d.close, pamięć sterty dokumentu jest zwalniana, podczas gdy iterator C wciąż działa. Po powrocie z bloku iterator odczytuje z zwolnionego obszaru, co prowadzi do podatności dostępnej z czystego Ruby.
- CVE-2026-54896Niskie
W bibliotece Oj (Optimized JSON) dla języka Ruby wykryto podatność na przepełnienie bufora sterty podczas serializacji obiektów Exception z dużą wartością parametru :indent. Problem występuje w wersjach przed 3.17.2 i został naprawiony w tej wersji.
- CVE-2026-54592Wysokie
W bibliotece Oj (Optimized JSON) dla języka Ruby wykryto podatność na odmowę usługi (DoS). Funkcja Oj::Doc#each_child przy rekurencyjnym przetwarzaniu głęboko zagnieżdżonego dokumentu JSON przepełnia bufor stosu o stałym rozmiarze, co powoduje awarię procesu. Problem został naprawiony w wersji 3.17.3.
- CVE-2026-54502Średnie
W bibliotece Oj (Optimized JSON) dla języka Ruby wykryto podatność na przepełnienie bufora stosu w metodzie Oj.dump. Problem występuje, gdy programista ustawi dużą wartość parametru :indent, co prowadzi do zapisu 2 GB danych na stosie i awarii procesu.
- CVE-2026-54500Średnie
W bibliotece Oj (Optimized JSON) dla języka Ruby wykryto podatność polegającą na odczycie niezainicjalizowanej pamięci stosu podczas parsowania kluczy JSON o długości 254 bajtów lub więcej w trybie :object. Błąd występuje w funkcji form_attr(), która przekazuje do rb_intern3() bufor stosu zamiast prawidłowo zaalokowanego bufora sterty, co prowadzi do wycieku danych ze stosu procesu. Problem został naprawiony w wersji 3.17.3.
Oryginalny opis (angielski, źródło NVD)
Oj (Optimized JSON) is a JSON parser and Object marshaller packaged as a Ruby gem. In versions prior to 3.17.2, when in usual mode with create_id enabled, Oj::Parser#parse is vulnerable to heap corruption via a negative-size memcpy. When a JSON object key is exactly 65,535 bytes long, an integer truncation in form_attr (usual.c:63) converts the length to -1 before passing it to memcpy. This causes memcpy to copy SIZE_MAX bytes (interpreted as a huge size_t), corrupting heap memory and crashing the process. The issue has been fixed in version 3.17.2.

