CVE-2026-54592
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 18 - wyżej niż 18% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może wysłać specjalnie spreparowany, głęboko zagnieżdżony dokument JSON, który doprowadzi do przerwania działania aplikacji korzystającej z podatnej biblioteki, powodując niedostępność usługi.
Rekomendacja
Należy niezwłocznie zaktualizować bibliotekę Oj do wersji 3.17.3 lub nowszej. Jeśli aktualizacja nie jest możliwa, należy ograniczyć możliwość przetwarzania 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-54900Średnie
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.
- 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-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.3, Oj::Doc#each_child, when invoked recursively over a deeply nested JSON document, overflows a fixed-size stack buffer and aborts the process, leading to DoS. In a two-step chain in ext/oj/fast.c, doc_each_child increments doc->where past the where_path[MAX_STACK = 100] array with no bounds check and never restores it (the doc->where-- is missing), so calling each_child recursively from inside the yield block drives doc->where beyond the array. On the next entry the function copies the path into the 800-byte stack-local buffer save_path[MAX_STACK] using wlen = doc->where - doc->where_path, so when the previous recursive call left doc->where past where_path[100] the wlen exceeds MAX_STACK and the memcpy overflows save_path on the C stack; because the Oj::Doc parser imposes no JSON nesting-depth limit (relying on a C-stack pressure check), deeply nested attacker input reaches this path. This issue has been fixed in version 3.17.3.

