Nel motore JavaScript LibJS, utilizzato nel browser web Ladybird, è stata scoperta una vulnerabilità (CVE-2025-47154) che consente l'esecuzione di codice arbitrario nel sistema durante l'elaborazione di codice JavaScript strutturato in modo specifico. La vulnerabilità è causata dal rilascio della memoria nel vettore m_argument_values_buffer, a cui rimaneva un puntatore nella struttura arguments_list, portando a una chiamata a un'area di memoria già liberata. È disponibile un prototipo funzionante dell'exploit.
Il ricercatore che ha identificato il problema ha eseguito test di fuzzing su LibJS, durante i quali sono stati registrati 10 crash. L'analisi di uno dei fallimenti ha rivelato che la vulnerabilità può essere sfruttata durante l'elaborazione del codice JavaScript. La vulnerabilità consentiva di leggere e scrivere in aree di memoria arbitraria del processo. L'esecuzione del codice è stata organizzata nell'exploit attraverso la sostituzione del puntatore di ritorno dalla funzione di rendering. Attraverso la programmazione orientata al ritorno (ROP - Return-Oriented Programming, l'exploit è formato da frammenti di istruzioni già esistenti che terminano con un'istruzione di ritorno), è stata formata una catena per l'esecuzione della chiamata di sistema execve per avviare un'applicazione esterna.
Il browser Ladybird è sviluppato da Andreas Kling, che ha lavorato per Nokia e ha contribuito allo sviluppo di KHTML, e successivamente è stato uno degli sviluppatori di Safari in Apple. Attualmente, Ladybird è in fase di pre-alpha, adatta solo per l'uso da parte degli sviluppatori. Inizialmente, il progetto è stato creato come applicazione per il sistema operativo SerenityOS, ma nell'estate dello scorso anno è stato separato in un progetto autonomo e ha ricevuto una donazione di 1 milione di dollari. Il browser è scritto in C++ (è stata presa la decisione di passare a Swift) e viene distribuito sotto licenza BSD. Il progetto sviluppa il proprio motore LibWeb, l'interprete JavaScript LibJS e le librerie correlate.
Fonte: opennet.ru
