În motorul JavaScript LibJS, utilizat în browserul web Ladybird, a fost identificată o vulnerabilitate (CVE-2025-47154) care permite executarea de cod malițios în sistem atunci când se prelucrează cod JavaScript special conceput. Vulnerabilitatea este cauzată de eliberarea memoriei pe vectorul m_argument_values_buffer, la care mai rămânea un pointer în structura arguments_list, provocând accesul la o zonă de memorie deja eliberată. Un prototip funcțional al exploit-ului este disponibil.
Cercetătorul care a identificat problema a efectuat testări de fuzzing asupra LibJS, în cadrul cărora au fost înregistrate 10 erori severe. Analiza uneia dintre aceste erori a arătat că problema poate fi exploatată în timpul prelucrării codului JavaScript. Vulnerabilitatea permitea citirea și scrierea în zone de memorie aleatorii ale procesului. Executarea codului a fost organizată în exploit prin înlocuirea pointerului de returnare din funcția de redare. Prin utilizarea programării orientate pe returnare (ROP - Return-Oriented Programming, exploit-ul este format din fragmente de instrucțiuni de mașină deja existente, care se termină cu instrucțiunea de returnare a controlului) a fost creată o lanț pentru a executa apelul sistemului execve pentru lansarea unei aplicații externe.
Browserul Ladybird este dezvoltat de Andreas Kling, care a lucrat anterior la compania Nokia dezvoltând KHTML, iar ulterior la Apple a fost unul dintre dezvoltatorii Safari. În prezent, Ladybird se află în stadiul de versiune pré-alfa, fiind destinat exclusiv utilizatorilor dezvoltatori. Inițial, proiectul a fost creat ca o aplicație pentru sistemul de operare SerenityOS, dar vara trecută a fost desprins ca un proiect de sine stătător și a primit o donație de 1 milion de dolari. Browserul este scris în C++ (s-a decis trecerea la limbajul Swift) și este distribuit sub licența BSD. Proiectul dezvoltă propriul motor LibWeb, interpretul JavaScript LibJS și biblioteci asociate.
Sursa: opennet.ro
