CVE-2026-54897
NiskieCVSS 2.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 2 - wyżej niż 2% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może wykorzystać tę podatność do odczytu lub zapisu w zwolnionej pamięci sterty, co może prowadzić do ujawnienia poufnych danych, awarii aplikacji lub potencjalnie zdalnego wykonania kodu w kontekście procesu Ruby.
Rekomendacja
Należy natychmiast zaktualizować gem Oj do wersji 3.17.2 lub nowszej. Jeśli aktualizacja nie jest możliwa, należy unikać wywoływania doc.close lub d.close wewnątrz bloków iteratorów each_value, each_child i each_leaf.
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-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. Prior to 3.17.2, Oj::Doc iterators (each_value, each_child, each_leaf) were vulnerable to a heap use-after-free. When a Ruby block yielded during iteration calls doc.close or d.close, the document's heap memory is freed while the C iterator is still running. When control returns from the block, the iterator reads from the freed region, producing a use-after-free accessible from pure Ruby. This issue has been fixed in version 3.17.2.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

