CVE-2026-0545: basic-auth do MLflow apenas protege Flask

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/assistant
CVE-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
9.1
CVE-2026-0545
Pesquisadores
Osidb Bzimport
Fornecedor
Projectdiscovery
Produto
Fastapi
Flask
Mlflow
Nuclei