CVE-2026-54500
ŚrednieCVSS 5.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 10 - wyżej niż 10% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może wykorzystać tę podatność do odczytu fragmentów pamięci stosu procesu, co może prowadzić do ujawnienia poufnych danych, takich jak klucze, hasła czy inne informacje przechowywane w pamięci aplikacji.
Rekomendacja
Należy niezwłocznie zaktualizować bibliotekę Oj do wersji 3.17.3 lub nowszej. Jeśli aktualizacja nie jest możliwa, należy unikać używania trybu :object z Oj.load() dla niezaufanych danych JSON.
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-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.
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.load in :object mode reads uninitialized stack memory (and, for long keys, reads out of bounds) when parsing a JSON object whose key is 254 bytes or longer. The interned bytes can surface to the caller, disclosing process stack memory. In ext/oj/intern.c, form_attr() handles the long-key path by allocating a heap buffer, `b`, populating it with the attribute name, and then freeing it — but it passed the uninitialized stack buffer buf (not b) to rb_intern3(). rb_intern3 therefore reads len + 1 bytes of uninitialized stack memory. When the key length is >= 256, it also reads out of bounds past the 256-byte buf. The resulting bytes are interned and can reach the caller via the produced Symbol or via the EncodingError message raised on invalid UTF-8, leaking process stack contents. This issue has been fixed in version 3.17.3.

