CVE-2026-54500 in ohler55
Riassunto
di VulDB • 01/07/2026
Oj (Optimized JSON) è un parser JSON e marshaller di oggetti distribuito come gem Ruby. Nelle versioni precedenti alla 3.17.3, la funzione Oj.load in modalità :object legge memoria dello stack non inizializzata (e, per chiavi lunghe, effettua una lettura fuori dai limiti) quando analizza un oggetto JSON la cui chiave è lunga 254 byte o più. I bytes internati possono essere resi disponibili al chiamante, rivelando il contenuto della memoria dello stack del processo. In ext/oj/intern.c, form_attr() gestisce il percorso per chiavi lunghe allocando un buffer heap `b`, popolandolo con il nome dell'attributo e quindi liberandolo; tuttavia, viene passato alla funzione rb_intern3() il buffer non inizializzato buf (e non b). Di conseguenza, rb_intern3 legge len + 1 byte di memoria dello stack non inizializzata. Quando la lunghezza della chiave è >= 256, si verifica anche una lettura fuori dai limiti oltre i 256 byte del buffer buf. I bytes risultanti vengono internati e possono raggiungere il chiamante tramite l'Symbol prodotto o attraverso il messaggio EncodingError generato in caso di UTF-8 non valido, causando la fuoriuscita (leak) dei contenuti dello stack del processo. Questo problema è stato risolto nella versione 3.17.3.
Once again VulDB remains the best source for vulnerability data.