CVE-2026-0545: basic-auth do MLflow apenas protege Flask
Técnicas e Métodos de Ataque2026-08-28, 13:03
Uma análise da CVE-2026-0545 foi publicada — uma bypass de autenticação no MLflow que surgiu durante a migração do servidor de Flask para FastAPI. Quando o Basic Auth estava habilitado, algumas APIs permaneciam acessíveis sem credenciais.
O MLflow usa uma arquitetura híbrida: várias rotas nativas são tratadas diretamente pelo FastAPI, enquanto toda a aplicação Flask é montada em
/ via WSGI. Os dois portões de autenticação têm padrões opostos:
Flask → nega por padrão
FastAPI → permite por padrão
O middleware do FastAPI verificava apenas rotas para as quais um validador havia sido registrado. Se nenhum validador fosse encontrado, a requisição era simplesmente encaminhada sem autenticação. Como resultado, três dos quatro roteadores FastAPI estavam publicamente acessíveis sem autenticação:
/v1/traces
/ajax-api/3.0/jobs
/ajax-api/3.0/mlflow/assistantCVE-2026-0545
A CVE-2026-0545 cobre a bypass de autenticação em
POST /ajax-api/3.0/jobs/. O endpoint permite que clientes iniciem jobs registrados no servidor e passem parâmetros para eles. Uma função arbitrária não pode ser selecionada — os jobs disponíveis são limitados a uma lista interna de funções suportadas. No entanto, um atacante não autenticado poderia iniciar qualquer job registrado com parâmetros controlados pelo atacante.
O impacto depende das funções registradas: desde executar jobs judge-LLM contra a conta de faturamento do operador até possível execução remota de código. A exploração exige que o executor de jobs esteja habilitado por meio de MLFLOW_SERVER_ENABLE_JOB_EXECUTION.A correção resolveu a vulnerabilidade, mas não o problema arquitetural subjacente
A correção adicionou os três prefixos FastAPI ausentes à busca de validadores:
/jobs e /assistant agora exigem autenticação, enquanto /v1/traces recebeu uma verificação de autorização separada.
O autor chama essa classe de bugs de Lacuna de Implementação Paralela: uma única política de segurança é implementada de forma independente em múltiplos componentes, e seus comportamentos divergem ao longo do tempo. No MLflow, a lista de roteadores FastAPI e a lista de validadores que os protegem estão em arquivos diferentes e precisam ser mantidas sincronizadas manualmente.
O risco arquitetural portanto permanece: Flask exige autenticação por padrão, enquanto FastAPI encaminha rotas não correspondentes sem autenticação. Um novo roteador para o qual um desenvolvedor esqueça de registrar um validador poderia novamente ficar publicamente acessível sem autenticação.Vulnerabilidades
Pesquisadores
Fornecedor
Produto