CVE-2026-54592
Açıklama
Oj (Optimized JSON), bir Ruby gem olarak paketlenmiş bir JSON ayrıştırıcı ve Nesne marshaller'ıdır. 3.17.3 öncesindeki sürümlerde, derinlemesine iç içe geçmiş bir JSON belgesi üzerinde özyinelemeli olarak çağrıldığında, Oj::Doc#each_child sabit boyutlu bir yığın tamponunu taşırarak işlemi durdurur ve bu durum DoS ile sonuçlanır. ext/oj/fast.c dosyasındaki iki adımlı zincirde, doc_each_child herhangi bir sınır kontrolü yapmadan doc->where değerini where_path[MAX_STACK = 100] dizisinin ötesine artırır ve bunu asla geri yüklemez (doc->where-- eksiktir); bu nedenle yield bloğu içerisinden each_child fonksiyonunun özyinelemeli olarak çağrılması, doc->where değerini dizinin dışına çıkarır. Bir sonraki girişte fonksiyon, wlen = doc->where - doc->where_path kullanarak yolu 800 baytlık yığın yerel tamponu olan save_path[MAX_STACK] içine kopyalar; böylece önceki özyinelemeli çağrı doc->where değerini where_path[100]'ün ötesinde bıraktığında, wlen değeri MAX_STACK'i aşar ve memcpy, C yığındaki save_path'i taşırır. Oj::Doc ayrıştırıcısı herhangi bir JSON iç içe geçme derinliği sınırı uygulamadığından (bir C-yığını basınç kontrolüne güvendiğinden), saldırgan tarafından gönderilen derinlemesine iç içe geçmiş girdiler bu yola ulaşır. Bu sorun 3.17.3 sürümünde düzeltilmiştir.
Nasıl düzeltilir
Kaynaklarda bu zafiyet için düzeltilmiş sürüm ya da yama bağlantısı yok.
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| ohler55 oj | < 3.17.3 | — |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.