Falha crítica em plataforma Python permite invasão remota sem credenciais

Wait 5 sec.

Uma vulnerabilidade crítica no Marimo permite que um invasor acesse e controle um servidor remoto sem precisar de nenhuma credencial. A falha, registrada como CVE-2026-39987, foi explorada ativamente em menos de dez horas após a divulgação pública, em abril de 2026. Marimo é uma plataforma de notebooks Python usada em projetos de ciência de dados e inteligência artificial. Neste contexto, “notebook” refere-se a um documento interativo executável, que combina blocos de código com textos explicativos, gráficos, equações matemáticas e resultados de análises em uma única página.O Marimo funciona com um servidor web que permite editar e executar código diretamente pelo navegador. Para facilitar o trabalho colaborativo, muitas instalações ficam acessíveis pela internet. Isso faz com que esses servidores frequentemente estejam ao lado de arquivos sensíveis, como credenciais de serviços em nuvem, bancos de dados e variáveis de ambiente com senhas. Basicamente, quem invade um servidor desse não encontra só o notebook, mas tudo que está instalado na mesma máquina.A CVE-2026-39987 foi explorada ativamente em menos de dez horas após a divulgação pública, com operações completas de roubo de credenciais executadas em menos de três minutos.O que é um WebSocket e onde estava o problemaPara entender a falha, é preciso entender o que é um WebSocket. Isso porque é exatamente esse mecanismo que o Marimo usa para manter a conexão em tempo real entre o navegador do usuário e o servidor.Diferente de uma requisição web comum, onde o browser pede uma informação e o servidor responde, um WebSocket abre um canal permanente de comunicação nos dois sentidos. É o mesmo tipo de tecnologia que mantém um chat ou um placar esportivo atualizado sem que a página precise ser recarregada.O Marimo tem vários desses canais abertos. A maioria deles exigia autenticação. O terminal integrado da plataforma, que dá acesso direto à linha de comando do servidor, não exigia.Servidores Marimo expostos à internet frequentemente armazenam credenciais e arquivos sensíveis, ampliando o impacto de uma invasão bem-sucedida.Como a invasão funcionava na práticaUm atacante só precisava enviar uma mensagem de abertura de conexão WebSocket para o endereço /terminal/ws no servidor. O servidor aceitava a conexão, alocava um terminal e entregava acesso à linha de comando sem verificar nenhuma credencial.A partir daí, o invasor podia executar qualquer comando como se fosse o usuário responsável pelo processo. Em instalações padrão com Docker, isso significava acesso como root, o usuário com os maiores privilégios do sistema. Não havia necessidade de phishing, nem de roubo de sessão. Um único handshake WebSocket, o processo inicial que permite a um cliente e a um servidor trocarem o protocolo HTTP tradicional pela conexão contínua e bidirecional do WebSocket, era suficiente para obter uma sessão interativa no servidor.Exploração imediata e campanha ativaA falha recebeu nota 9,3 de 10 no sistema de pontuação de vulnerabilidades CVSS v4.0 e foi adicionada ao catálogo de vulnerabilidades exploradas ativamente da CISA em 23 de abril de 2026. O prazo federal para correção era 7 de maio.Pesquisadores do Sysdig Threat Research Team registraram a primeira tentativa de exploração 9 horas e 41 minutos após a publicação do aviso de segurança. Uma operação completa de roubo de credenciais foi executada em menos de três minutos.Uma campanha rastreada pelos pesquisadores usa a falha para instalar uma variante do backdoor NKAbuse, que utiliza infraestrutura de comando e controle baseada em blockchain, o que dificulta o monitoramento e bloqueio do tráfego malicioso.A correção está disponível na versão 0.23.0 do Marimo, que passa a exigir autenticação no terminal WebSocket da plataforma, eliminando o acesso não autorizado.Como se protegerA correção está disponível na versão 0.23.0 do Marimo, que alinha a autenticação do terminal com os demais endpoints da plataforma. A atualização pode ser feita com o comando pip install --upgrade "marimo>=0.23.0".Além da atualização, recomenda-se não expor o Marimo em modo de edição para redes não confiáveis, evitar associar o serviço a todas as interfaces de rede e verificar se há sinais de comprometimento em servidores que ficaram desatualizados. Qualquer instalação abaixo da versão 0.23.0 deve ser tratada como comprometida até prova em contrário.Acompanhe o TecMundo nas redes sociais. Inscreva-se em nossa newsletter e canal do YouTube.