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.
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.

