← back
CVE-2021-40870criticalunder attack

CVE-2021-40870

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 9.8epss 93%
from disclosure to weapon24 days
Published on NVDSep 13
1st PoC+24d
CISA KEV+127d
exploitation probability
93%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
9 public exploit(s)
Action required by CISAfederal deadline: 2022-02-01

Apply updates per vendor instructions.

Summary

Falha crítica no Aviatrix Controller (linha 6.x) que permite a um atacante não autenticado enviar um arquivo PHP arbitrário para dentro do diretório web via travessia de diretório em um parâmetro de API, e depois executá-lo simplesmente acessando a URL correspondente. Não exige autenticação nem configuração especial — qualquer instância exposta na internet com a versão vulnerável está em risco direto de execução remota de código como root/serviço web.

Technical detail

O Aviatrix Controller expõe um conjunto de endpoints de API (ex.: /v1/backend1) que deveriam exigir um CID (session token) válido, mas várias ações — entre elas set_metric_gw_selections — não fazem a checagem de autenticação corretamente. Isso é a raiz do problema: falta de controle de acesso em endpoints de backend pensados para uso interno da aplicação.

Um segundo defeito se combina com o primeiro: o parâmetro account_name dessas chamadas é usado para compor um caminho de arquivo no filesystem sem sanitização de sequências '../' (CWE-25, path traversal), e o conteúdo enviado no parâmetro data é gravado nesse caminho sem validação de tipo/extensão (CWE-434/CWE-96, unrestricted upload). O atacante controla integralmente o caminho de destino (podendo sair da pasta de upload esperada e cair dentro da webroot servida pelo PHP) e o conteúdo do arquivo (podendo embutir código PHP arbitrário).

O resultado é escrita de arquivo arbitrário fora do diretório pretendido, seguida de execução, porque o arquivo gravado fica acessível e é interpretado pelo servidor web front-end (PHP). Não há isolamento entre a área de upload legítima da aplicação e o restante da árvore web.

Vale notar uma pequena divergência de score entre fontes: a NVD calcula CVSS 9.8 com Scope Unchanged (S:U), enquanto o advisory do pesquisador que reportou a falha (Tradecraft) calcula 10.0 com Scope Changed (S:C) — mesma cadeia de exploração, avaliação de impacto de escopo diferente.

How it’s exploited

A exploração documentada publicamente consiste em uma requisição HTTP direta ao endpoint /v1/backend1 do controller, informando um CID qualquer (não validado), a ação set_metric_gw_selections, e usando o parâmetro account_name para atravessar diretórios até um local dentro da pasta servida pelo PHP (ex.: var/www/php), gravando um arquivo com extensão .php cujo conteúdo (parâmetro data) contém código PHP. Uma segunda requisição, um simples GET ao caminho do arquivo recém-criado, dispara a execução do código.

Pré-requisitos reais: apenas acesso de rede à interface HTTPS de gerenciamento do controller — nenhuma credencial, nenhuma interação de usuário, nenhuma configuração não padrão. Isso explica o CVSS alto e por que a falha é tratada como crítica de fato, não só no papel. A complexidade técnica de exploração é baixa: a cadeia (bypass de auth em API interna + path traversal + upload) é direta e já foi publicada como PoC.

A CISA confirmou exploração ativa em ambiente real (entrada no catálogo KEV desde 18/01/2022, com prazo de correção definido para 01/02/2022), e existe template Nuclei público, o que indica varredura automatizada em massa contra instâncias expostas. O resultado final da exploração é execução arbitrária de código no host do controller, tipicamente com privilégios do processo web — na prática, controle total do controller, que por sua vez gerencia infraestrutura de rede/cloud (gateways, VPCs, contas cloud) — o que amplia o impacto muito além do host afetado.

Versions

Affected
Aviatrix Controller linha 6.x anteriores a 6.5-1804.1922 (conforme descrição oficial/NVD). O advisory do pesquisador (Tradecraft) especifica ainda os pontos de corte por branch: antes de UserConnect-6.2-1804.2043, antes de UserConnect-6.3-1804.2490, antes de UserConnect-6.4-1804.2838.
Fixed in
UserConnect-6.2-1804.2043 ou posterior; UserConnect-6.3-1804.2490 ou posterior; UserConnect-6.4-1804.2838 ou posterior; UserConnect-6.5-1804.1922 ou posterior. Fix lançado pelo fornecedor em 2021-09-11.

How to protect

A correção definitiva é atualizar para a versão de cada branch indicada pelo fornecedor/pesquisador: UserConnect-6.2-1804.2043 ou posterior, UserConnect-6.3-1804.2490 ou posterior, UserConnect-6.4-1804.2838 ou posterior, ou UserConnect-6.5-1804.1922 ou posterior (a NVD resume isso como 'antes de 6.5-1804.1922' sendo a versão corrigida na linha principal). Não há patch de configuração documentado que neutralize a falha sem atualizar — o problema está na própria lógica dos endpoints de API, não em uma opção que possa ser desligada.

Como controle compensatório até a atualização, restringir o acesso de rede à interface de gerenciamento do controller (permitir apenas de redes administrativas confiáveis, nunca exposta livremente à internet) reduz a superfície de ataque, já que toda a cadeia depende de conseguir alcançar o endpoint HTTPS do controller. Isso não corrige a vulnerabilidade, apenas limita quem pode tentar.

Mito a descartar: exigir autenticação na UI não protege contra esta falha — o próprio advisory do pesquisador destaca que a UI pede login, mas várias chamadas de API de backend usadas internamente pela aplicação não validam sessão, então a presença de tela de login não é indicativo de proteção.

How to detect

Em logs do servidor web/controller, procurar requisições POST para /v1/backend1 com o parâmetro action=set_metric_gw_selections combinado com valores de account_name contendo sequências de travessia de diretório ('../') e extensão .php — isso é o padrão de exploração publicado. Em seguida, requisições GET a caminhos .php incomuns dentro da webroot (fora dos scripts legítimos da aplicação) indicam a etapa de execução. Também vale auditar o filesystem do controller por arquivos .php recém-criados fora das pastas esperadas da aplicação. Não há um único indicador de rede confiável além desse padrão de payload, já que o tráfego é HTTPS para o mesmo endpoint usado legitimamente pela aplicação — sem decriptação/inspeção de payload na camada de aplicação, a detecção via NIDS puro é limitada.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
An issue was discovered in Aviatrix Controller 6.x before 6.5-1804.1922. Unrestricted upload of a file with a dangerous type is possible, which allows an unauthenticated user to execute arbitrary code via directory traversal.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Affected products
n/a · n/a
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.