No pacote Js2Py para Python, que foi baixado 1,2 milhões de vezes no mês passado, foi identificada uma vulnerabilidade (CVE-2024-28397) que permite contornar a isolação do sandbox e executar código no sistema ao processar dados especialmente formatados em JavaScript. A vulnerabilidade pode ser explorada em programas que utilizam Js2Py para executar código JavaScript. Até o momento, a correção está disponível apenas na forma de um patch. Um protótipo de exploit foi preparado para verificar a possibilidade de ataque.
O pacote Js2Py implementa um intérprete e um compilador de JavaScript, permitindo executar código JavaScript em um ambiente isolado máquina virtual ou compilar JavaScript para uma representação em Python. O projeto é escrito inteiramente em Python e não utiliza engines de JavaScript de terceiros. Na prática, a biblioteca é utilizada em vários indexadores web, sistemas de download e analisadores de sites que suportam o processamento de conteúdo gerado por código JavaScript.
Entre os aplicativos que são afetados pela vulnerabilidade estão o Lightnovel Crawler (uma ferramenta para baixar livros de serviços online e salvá-los em vários formatos para leitura offline), cloudscraper (que contorna automaticamente páginas de proteção contra bots usadas na CDN Cloudflare) e pyLoad (um gerenciador de downloads que suporta o processamento de páginas geradas em JavaScript). Ao processar conteúdo JavaScript especialmente formatado nesses aplicativos, um atacante pode conseguir executar código arbitrário no nível do sistema.
A vulnerabilidade está presente na implementação da variável global dentro do js2py, permitindo acessar um objeto Python a partir do código JavaScript executado no ambiente isolado, apesar da chamada ao método js2py.disable_pyimport() para desativar a importação de objetos Python. Para executar código arbitrário no sistema, o atacante pode explorar a vulnerabilidade para obter acesso ao objeto Popen do módulo Python subprocess. Notavelmente, a alteração para corrigir a vulnerabilidade foi enviada ao projeto Js2Py no dia primeiro de março, mas não foi aceita ao longo de três meses e meio.
Fonte: opennet.ru
