Në motorin JavaScript LibJS, i përdorur në shfletuesin web Ladybird, është identifikuar një cenueshmëri (CVE-2025-47154), e cila lejon që të arrihet ekzekutimi i kodit të vet në sistem gjatë përpunimit të kodit JavaScript të dizajnuar posaçërisht. Cenuesshmëria shkaktohet nga lirimi i memories në vektor m_argument_values_buffer, ku ka mbetur një tregues në strukturën arguments_list, duke sjellë një akses në një zonë të memories tashmë të liruar. Një prototip funksional i shpërthimit është në dispozicion.
Hulumtuesi që zbuloi problemin kryeu testime fuzzing në LibJS, gjatë të cilave u dokumentuan 10 ndalime fatale. Analiza e një nga dështimeve tregoi se problemi mund të shfrytëzohej gjatë përpunimit të kodit JavaScript. Cenuesshmëria lejonte të lexohej dhe shkruhej në zona të ndryshme të memories së procesit. Ekzekutimi i kodit u organizua në shpërthim duke zëvendësuar treguesin e kthimit nga funksioni i vizatimit. Me ndihmën e programimit të orientuar nga kthimi (ROP — Return-Oriented Programming, shpërthimi formohet nga copa ekzistuese të instruksioneve makinerike, duke përfunduar me një instrukcion për kthimin e kontrollit), u formua një zinxhir për ekzekutimin e thirrjes sistemike execve për të nisur një aplikacion të jashtëm.
Shfletuesi Ladybird po zhvillohet nga Andreas Kling, i cili dikur punonte në kompaninë Nokia dhe merrej me zhvillimin e KHTML, e më pas ishte një nga zhvilluesit e Safari në Apple. Në fazën aktuale të zhvillimit, Ladybird ndodhet në fazën e versionit pre-alfa, e cila është e përshtatshme vetëm për përdorim nga zhvilluesit. Projekti fillimisht u krijua si një aplikacion për sistemin operativ SerenityOS, por vitin e kaluar u ndanë në një projekt të veçantë dhe mori një donacion prej 1 milion dollarësh. Shfletuesi është shkruar në gjuhën C++ (vendosur të kalojë në gjuhën Swift) dhe shpërndahet nën licencën BSD. Projekti po zhvillon motorin e tij LibWeb, interpreterin JavaScript LibJS dhe bibliotekat e mbështetëse.
Burimi: opennet.ru
