CVE-2024-50603
Patch now. It under exploitation confirmed by CISA and has a working public exploit.
Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable.
Summary
Falha de OS command injection (CWE-78) no Aviatrix Controller que permite execução remota de código sem autenticação, através do endpoint /v1/api. É crítica porque não exige credenciais válidas — apenas alcançar a API de gerenciamento — e está no catálogo KEV da CISA com exploração confirmada em campo, além de PoC pública e template Nuclei disponíveis.
Technical detail
O Aviatrix Controller expõe uma API HTTP (/v1/api) implementada em PHP que atua como wrapper: recebe parâmetros do usuário, monta uma string de comando shell e a executa via exec_command(), que por sua vez invoca o binário cloudx_cli com sudo. A maioria dos parâmetros passa por escapeshellarg() antes de ser concatenada ao comando, mas os parâmetros cloud_type (na ação list_flightpath_destination_instances) e src_cloud_type (na ação flightpath_connection_test) não recebem esse tratamento — ficam expostos diretamente na string de comando.
Como esses valores entram sem sanitização, metacaracteres de shell (pipe, $(), ponto e vírgula, crase) enviados nesses campos são interpretados pelo shell no momento da execução, permitindo encadear comandos arbitrários com os privilégios do processo (via sudo).
Um agravante estrutural: a API exige um parâmetro CID (session identifier), mas a validação desse token acontece dentro do próprio cloudx_cli, não na camada PHP que monta o comando. Isso significa que qualquer valor de CID — inclusive uma string arbitrária sem sessão válida — é aceito pelo wrapper PHP para chegar até o ponto de execução do comando injetado, o que na prática elimina a necessidade de autenticação para disparar a falha.
How it’s exploited
A exploração é uma requisição HTTP POST não autenticada para /v1/api com action=list_flightpath_destination_instances (ou flightpath_connection_test) e os parâmetros obrigatórios account_name, region e vpc_id_name preenchidos com qualquer valor não vazio; o campo CID pode conter qualquer string. O comando malicioso é injetado no parâmetro cloud_type (ou src_cloud_type), usando um metacaractere de shell para encadear um comando adicional executado com os privilégios do processo por trás do sudo.
O único pré-requisito real é alcançar a interface de API do controller na rede — não há necessidade de sessão, credencial ou configuração não padrão. Pesquisadores identificaram centenas de instâncias do Aviatrix Controller expostas publicamente via Shodan no momento da análise, o que amplia a superfície de ataque para quem deixa o painel de gerenciamento acessível pela internet.
A CISA confirma exploração ativa no catálogo KEV (adicionada em 16/01/2025, com prazo de mitigação até 06/02/2025), e o EPSS extremamente alto (0.985) indica probabilidade quase certa de tentativas de exploração em massa contra instâncias expostas.
Versions
How to protect
Atualizar para as versões corrigidas pelo fornecedor: 7.1.4191 ou superior no ramo 7.1.x, e 7.2.4996 ou superior no ramo 7.2.x. O fornecedor lançou uma correção inicial em 07/11/2024 e uma nova versão corrigida em 19/12/2024, então builds intermediárias podem não cobrir totalmente a falha — confirme a versão exata instalada contra o advisory oficial da Aviatrix.
Se a atualização não for imediatamente viável, a única mitigação compensatória real é restringir o acesso de rede à interface de gerenciamento do Controller (limitar a IPs/VPNs confiáveis), já que a falha não exige autenticação e a exposição direta à internet é o fator que a torna trivialmente explorável. Isso não corrige a vulnerabilidade, apenas reduz a superfície de ataque.
Não há mitigação via configuração de aplicação (não existe flag documentada para desabilitar as ações vulneráveis) — WAF genérico pode bloquear padrões óbvios de metacaracteres nos parâmetros cloud_type/src_cloud_type, mas não é solução confiável dada a variedade de encodings possíveis em injeção de shell.
How to detect
Procurar em logs de acesso web (ou logs da aplicação PHP) requisições POST para /v1/api com action=list_flightpath_destination_instances ou action=flightpath_connection_test contendo metacaracteres de shell (|, $(), `, ;, &&) nos parâmetros cloud_type ou src_cloud_type. Valores de CID que não correspondem a sessões legítimas conhecidas também são um indício, já que a exploração não depende de autenticação real.
No nível de host, monitorar o processo cloudx_cli (executado via sudo) gerando processos filhos inesperados — como curl, wget, sh ou bash — ou conexões de saída não usuais originadas do Controller para IPs externos, padrão observado na PoC pública (exfiltração via requisição HTTP para servidor controlado pelo atacante).