Uma vulnerabilidade (CVE-2025-47154) foi detectada no motor JavaScript LibJS, usado no navegador web Ladybird, que permite a execução de código malicioso na máquina ao processar um código JavaScript especialmente formatado. A vulnerabilidade resulta da liberação de memória no vetor m_argument_values_buffer, para o qual ainda havia um ponteiro na estrutura arguments_list, levando ao acesso a uma área de memória já liberada. Um protótipo funcional do exploit está disponível.
O pesquisador que descobriu o problema realizou testes de fuzzing no LibJS, durante os quais foram registrados 10 encerramentos anormais. A análise de uma das falhas mostrou que o problema pode ser explorado durante o processamento de código JavaScript. A vulnerabilidade permitiu a leitura e escrita em áreas de memória arbitrárias do processo. A execução de código foi organizada no exploit através da substituição do ponteiro de retorno da função de renderização. Usando Programação Orientada a Retorno (ROP — Return-Oriented Programming, o exploit é formado a partir de pedaços já existentes de instruções de máquina que terminam com uma instrução de retorno), foi criada uma cadeia para executar a chamada de sistema execve para iniciar um aplicativo externo.
O navegador Ladybird está sendo desenvolvido por Andreas Kling, que já trabalhou na Nokia e esteve envolvido no desenvolvimento do KHTML, e depois na Apple foi um dos desenvolvedores do Safari. Atualmente, o Ladybird encontra-se em estágio pré-alpha, adequado apenas para uso por desenvolvedores. O projeto foi inicialmente criado como um aplicativo para o sistema operacional SerenityOS, mas no verão do ano passado foi destacado como um projeto separado e recebeu um financiamento de 1 milhão de dólares. O navegador é escrito em C++ (decidiu-se migrar para a linguagem Swift) e é distribuído sob a licença BSD. O projeto também desenvolve seu próprio motor LibWeb, o interpretador JavaScript LibJS e bibliotecas associadas.
Fonte: opennet.ru
