A CVE-2026-91997 afeta a Evolution API até a versão 2.3.7, a última estável. A falha está no filtro de IPs que deveria proteger o endpoint /metrics: por um erro de comparação, ele nunca bloqueia ninguém. Quem habilitou as métricas do Prometheus e confiou só nessa lista de IPs deixou o endpoint aberto para qualquer pessoa na internet. A severidade é média (CVSS 5.3) e não há execução de código, mas o vazamento entrega informações úteis para um ataque mais sério. Neste guia mostramos onde está o erro, como saber se você é afetado e como se proteger enquanto não sai uma versão estável corrigida.
O que é a CVE-2026-91997
A Evolution API pode expor métricas no formato do Prometheus em /metrics. O recurso vem desligado (PROMETHEUS_METRICS=false) e, quando ligado, aceita duas proteções independentes:
- Lista de IPs (
METRICS_ALLOWED_IPS): só os endereços listados deveriam acessar. - Autenticação básica (
METRICS_AUTH_REQUIRED,METRICS_USEReMETRICS_PASSWORD).
A vulnerabilidade está na primeira. O middleware compara o resultado de um filter(), que é um array, com o número zero:
if (allowedIPs.filter((ip) => clientIPs.includes(ip)) === 0) {
return res.status(403).send('Forbidden: IP not allowed');
}
Um array nunca é estritamente igual a 0, então a condição é sempre falsa e a requisição segue adiante, venha de onde vier. A comparação correta seria com o tamanho do array (.length === 0). A falha foi publicada em 15/09/2026 e classificada como CWE-697 (comparação incorreta).
O que um atacante consegue ver
O /metrics não permite alterar nada, mas revela:
- a versão da Evolution API em uso, o que ajuda a escolher outras falhas conhecidas para explorar;
- o nome do cliente do banco de dados configurado;
- a URL configurada do servidor;
- detalhes das instâncias de WhatsApp conectadas.
É um vazamento de informação (confidencialidade baixa, sem impacto em integridade ou disponibilidade). O risco real é servir de reconhecimento para o próximo passo de um ataque.
Você está vulnerável?
Você só é afetado se as três condições forem verdadeiras:
- usa a Evolution API até a 2.3.7;
- ligou as métricas (
PROMETHEUS_METRICS=true). Com o padrãofalse, a rota/metricsnem é registrada; - protegeu o endpoint só com
METRICS_ALLOWED_IPS, semMETRICS_AUTH_REQUIRED=true.
Para conferir na prática, faça a requisição a partir de uma máquina que não está na lista de IPs permitidos:
curl -i https://sua-evolution.exemplo.com/metrics
Se a resposta for 200 com as métricas no corpo, o endpoint está exposto. O esperado é 401 (autenticação exigida), 403 (bloqueado no proxy) ou 404 (métricas desligadas).
Ainda não há versão estável corrigida
A última versão estável é a 2.3.7, de dezembro de 2025. Até a publicação deste artigo, as versões publicadas depois dela são apenas candidatas (2.4.0-rc1 e 2.4.0-rc2), e o trecho vulnerável continua igual na rc2. Atualizar a versão, portanto, não resolve: a proteção hoje depende de configuração.
Como se proteger: passo a passo
- Desligue as métricas se não usa. Defina
PROMETHEUS_METRICS=false(o padrão) e reinicie. Sem a rota, não há o que explorar. - Se usa, exija autenticação. A autenticação básica funciona de forma independente do filtro quebrado:
Configure as mesmas credenciais noPROMETHEUS_METRICS=true METRICS_AUTH_REQUIRED=true METRICS_USER=prometheus METRICS_PASSWORD=uma-senha-longa-e-aleatoriascrape_configdo Prometheus (basic_auth). - Bloqueie o
/metricsna borda. No proxy reverso, negue a rota para quem vem de fora. No Nginx, por exemplo:location = /metrics { allow 10.0.0.0/8; # rede do Prometheus deny all; } - Tire a API da internet quando possível. Se só os seus sistemas falam com a Evolution, publique-a apenas na rede interna (VPC, rede do Docker ou Service interno no Kubernetes) e não no proxy público.
- Teste de novo com o
curlacima, de fora da rede, e confirme que não volta200. - Procure acessos antigos. Busque requisições a
/metricsvindas de IPs desconhecidos nos logs do proxy. Se houver, trate a URL do servidor e os nomes das instâncias como informação já conhecida e revise as demais proteções da API (chaveAUTHENTICATION_API_KEYforte e trocada, por exemplo). - Acompanhe o projeto. Quando sair uma versão estável com a comparação corrigida, atualize. Quem mantém imagem própria pode aplicar a correção de uma linha (
.length === 0) até lá.
Como tratamos na Hcode
Usamos a Evolution API para as integrações de WhatsApp do Hub. A instância não tem rota pública: só os nossos sistemas a acessam, pela rede interna do cluster, então o /metrics não é alcançável de fora independentemente da configuração. Além disso, rodamos uma imagem própria da Evolution com as dependências corrigidas e passamos todas as imagens de produção por um scan diário de vulnerabilidades. É a mesma ideia que recomendamos acima: não depender de uma única barreira.
Erros comuns
- Confiar só na lista de IPs. É exatamente a proteção que não funciona nesta falha.
- Ligar as métricas para um teste e esquecer. Revise o
.enve as variáveis do container em produção. - Esperar resolver atualizando. Até agora não há versão estável corrigida; a mitigação é configuração e rede.
- Expor a API inteira na internet quando só sistemas internos a usam.
Perguntas frequentes
A CVE-2026-91997 permite executar comandos no servidor?
Não. Ela permite apenas ler o endpoint /metrics, que expõe versão, cliente do banco, URL do servidor e dados das instâncias. A severidade é média (CVSS 5.3).
Estou com as métricas desligadas. Preciso fazer algo?
Não para esta falha: com PROMETHEUS_METRICS=false a rota não existe. Vale só confirmar que a variável está assim em produção.
Atualizar para a 2.4.0 resolve?
Não por enquanto. A 2.4.0 ainda está em release candidate e o trecho vulnerável continua igual na 2.4.0-rc2. Use as mitigações acima.
A autenticação básica das métricas também está quebrada?
Não. A falha está só no filtro de IPs. Com METRICS_AUTH_REQUIRED=true e usuário e senha definidos, o endpoint exige credenciais normalmente.
Conclusão
A CVE-2026-91997 é um erro pequeno de código com um efeito claro: a lista de IPs do /metrics da Evolution API não protege nada. Se as métricas estão desligadas, você não é afetado. Se estão ligadas, exija autenticação, bloqueie a rota no proxy e, sempre que puder, mantenha a API fora da internet. Para se aprofundar em segurança de APIs e infraestrutura, conheça os cursos da plataforma da Hcode.
Fontes
- CVE-2026-91997, NVD.
- GHSA-755x-c9g7-3hr7, GitHub Advisory Database, 15/09/2026.
- Evolution API through 2.3.7: Prometheus metrics IP allowlist bypass, VulnCheck.
- Código do middleware afetado (2.3.7), GitHub.
- Releases da Evolution API, GitHub.