CVE-2026-7711: RCE no MindsDB — quando o próprio cliente escolhe um modo de execução Python inseguro

Foi publicada uma análise técnica da CVE-2026-7711 no MindsDB. A vulnerabilidade permite a execução remota de código Python arbitrário por meio do mecanismo BYOM (Bring Your Own Model). O problema central não é contornar a validação de arquivos enviados, mas uma falha arquitetural: o cliente HTTP pode selecionar um modo de execução inseguro, enquanto a autenticação da API está desativada por padrão.
O MindsDB fornece dois modos de execução para modelos personalizados: • ModelWrapperSafe — executa o código enviado em um processo separado dentro de um ambiente virtual Python. • ModelWrapperUnsafe — executa o código diretamente dentro do processo worker do MindsDB.
Cadeia de exploração: O atacante envia PUT /api/handlers/byom/<name> com um arquivo Python no campo code e o parâmetro type=inhouse. O servidor converte inhouse em BYOM_TYPE.INHOUSE, selecionando ModelWrapperUnsafe. O valor alternativo VENV seleciona ModelWrapperSafe. O código enviado é passado para import_string() em proc_wrapper.py, que chama exec(code, module.__dict__). Todas as instruções de nível superior são executadas antes que o servidor verifique se a classe do modelo fornece os métodos train() e predict(). Consequentemente, rejeitar um modelo inválido não impede a execução do código malicioso.
O PoC invoca subprocess.run(['whoami']) e grava a saída em /tmp/pwned.txt. O comando é executado com os privilégios do processo worker do MindsDB. O namespace /api/handlers está listado em protected_namespaces, mas a verificação de autenticação só é aplicada quando config["auth"]["http_auth_enabled"] está definido como True. Essa configuração tem como padrão False.
Na implantação auto-hospedada examinada, a API HTTP escuta em 0.0.0.0:47334, e o BYOM está habilitado. No modo de implantação em nuvem do MindsDB, existe uma proteção separada: MINDSDB_BYOM_ENABLED tem como padrão false. Portanto, as descobertas não devem ser automaticamente consideradas aplicáveis ao serviço em nuvem do MindsDB.
Notavelmente, o mecanismo de upload de arquivos funciona conforme projetado: o servidor salva o arquivo enviado em um diretório temporário e subsequentemente passa seu conteúdo para exec(). O cliente também controla a escolha entre os modos de execução seguro e inseguro por meio de um campo de formulário multipart comum.
Mitigação: Não exponha a API BYOM vulnerável a redes não confiáveis. Habilite a autenticação HTTP, restrinja a capacidade de enviar modelos personalizados e impeça clientes não confiáveis de selecionar a execução INHOUSE. A autenticação restringe o acesso, mas não transforma ModelWrapperUnsafe em um sandbox.
Vulnerabilidades
Pesquisadores
Fornecedor
Produto