← voltar
CVE-2019-12989criticalsob ataqueCWE-89

CVE-2019-12989

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 9.8epss 94%
da publicação à arma0 dias
Publicada no NVD16 de jul.
1ª PoC12 de jul.
CISA KEV+983d
probabilidade de exploração
94%top 1% das CVEs
exploração observada
simCISA + VulnCheck
2 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2022-04-15

Apply updates per vendor instructions.

Resumo

SQL injection não autenticada no endpoint da API Nitro do Citrix SD-WAN (`/sdwan/nitro/v1/config/get_package_file`), que permite a um atacante remoto sem credenciais escrever arquivos arbitrários no sistema via `INTO OUTFILE` e, a partir daí, forjar um token de sessão válido — bypass completo de autenticação. É a porta de entrada de uma cadeia que termina em execução de comando como root quando combinada com CVE-2019-12991. Está no catálogo KEV da CISA com exploração confirmada, o que eleva a prioridade de patch bem além do que o CVSS sozinho sugeriria.

Detalhamento técnico

A falha (CWE-89) está no script Perl `getpackagefile.cgi`, que monta consultas SQL concatenando diretamente o parâmetro `site_name` recebido no corpo da requisição, sem sanitização ou uso de prepared statements. O trecho vulnerável identificado pela Tenable monta uma query do tipo `SELECT ... FROM Network_Appliance_Active WHERE site_name ='' AND appliance_id=;` — o atacante controla `site_name` e injeta uma cláusula `UNION SELECT ... INTO OUTFILE` para gravar conteúdo arbitrário em qualquer caminho onde o usuário `mysql` tenha permissão de escrita, incluindo `/tmp`.

O ponto crítico é que essa escrita arbitrária de arquivo é usada para forjar um arquivo de token de sessão (`swc-token`) diretamente no diretório esperado pela aplicação. Como o mecanismo de autenticação do painel de gerência confia na existência desse arquivo em disco, criar um token via SQLi equivale a autenticar-se sem jamais fornecer credenciais válidas. A requisição vulnerável exige o cabeçalho `SSL_CLIENT_VERIFY: SUCCESS`, o parâmetro `action=file_download` e `Content-Type: application/json`, condições triviais de satisfazer porque são controladas pelo próprio cliente HTTP, não pelo servidor.

A Tenable documentou outras queries na mesma rotina igualmente vulneráveis ao mesmo padrão de concatenação insegura, então a superfície de injeção não se limita a um único ponto de entrada dentro do script.

Como é explorada

O vetor é uma única requisição HTTP POST não autenticada contra a interface de gerência/API do appliance, sem necessidade de acesso prévio, conta válida ou configuração não padrão — basta acesso de rede à porta HTTPS de gerenciamento. O atacante injeta o payload SQL no campo `site_name` para gravar um arquivo de token no sistema de arquivos local do appliance (tipicamente em `/tmp`), depois acessa outro endpoint (`vwdash.cgi`) apresentando esse token forjado como parâmetro de sessão, obtendo uma sessão administrativa autenticada sem nunca ter tido credenciais.

A partir daí a cadeia de ataque documentada pela Tenable segue para CVE-2019-12991 (command injection autenticado em `installpatch.cgi`, parâmetro `installfile` passado sem validação a uma chamada `system()` do Perl), alcançando execução de comando como root. Ou seja, a SQLi por si só já entrega bypass de autenticação e escrita arbitrária de arquivo; combinada com a segunda falha, entrega controle total do appliance.

A presença no catálogo KEV da CISA confirma exploração ativa em ambiente real, e a existência de PoC pública e de template Nuclei tornam a detecção do ataque trivial de automatizar tanto para defensores quanto para atacantes — a barreira técnica para exploração é baixa.

Versões

Afetadas
Citrix SD-WAN 10.2.x anterior a 10.2.3 e NetScaler SD-WAN 10.0.x anterior a 10.0.8, segundo a descrição oficial do CVE. A Tenable, que descobriu a falha, lista o escopo afetado de forma um pouco diferente em seu advisory original: NetScaler SD-WAN 9.x, NetScaler SD-WAN 10.0.x antes de 10.0.8, e Citrix SD-WAN 10.1.x — divergência provavelmente ligada ao rebranding do produto (NetScaler SD-WAN → Citrix SD-WAN) entre as linhas de versão, sem que as fontes disponíveis expliquem o mapeamento exato entre 10.1.x e 10.2.x.
Corrigidas em
10.2.3 e 10.0.8, conforme confirmado pelo advisory da Tenable ('version 10.2.3 patches all issues') e pelo bulletin da Citrix (CTX251987).

Como se proteger

A correção do fornecedor é atualizar para Citrix SD-WAN 10.2.3 ou superior, ou NetScaler SD-WAN 10.0.8 ou superior, conforme o ramo em uso. Não há flag de configuração ou desativação de funcionalidade documentada como paliativo eficaz — a falha está na lógica de construção de query do script CGI, então qualquer mitigação sem patch depende de bloquear o acesso à API vulnerável.

Como controle compensatório enquanto o patch não é aplicado, restrinja o acesso à interface de gerenciamento/API Nitro (`/sdwan/nitro/v1/...`) apenas a redes de gerência confiáveis — isolamento de rede é a mitigação real disponível, já que o vetor exige alcançar essa interface via rede. Um WAF com regra específica para o padrão de injeção no parâmetro `site_name` reduz risco mas não fecha a falha, pois há outras queries vulneráveis no mesmo script além da documentada no PoC.

Não trate autenticação de rede (VPN, bastion) como substituto de patch permanente: como o próprio ataque é um bypass de autenticação, qualquer superfície residual acessível à interface vulnerável mantém o risco. A ação recomendada pela CISA no KEV é simplesmente aplicar a atualização do fornecedor.

Como detectar

Requisições HTTP POST para o endpoint `/sdwan/nitro/v1/config/get_package_file?action=file_download` contendo o cabeçalho `SSL_CLIENT_VERIFY: SUCCESS` combinado com sintaxe SQL (`UNION SELECT`, `INTO OUTFILE`) no corpo JSON, especialmente no campo `site_name`, são o indicador mais direto de tentativa de exploração — esse é exatamente o padrão do PoC público e do template Nuclei existente. Presença de arquivos inesperados em `/tmp` com nome relacionado a `token_` no appliance, ou logins no `vwdash.cgi` via parâmetro `swc-token` sem fluxo de autenticação normal precedente, são sinais de comprometimento pós-exploração.

Como o ataque não deixa rastro em logs de autenticação convencionais (a autenticação nunca ocorre de fato, é forjada), a ausência de eventos de login não indica ausência de exploração — a análise deve focar em logs de acesso HTTP do appliance e no conteúdo dos requests, não em logs de sessão.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
Citrix SD-WAN 10.2.x before 10.2.3 and NetScaler SD-WAN 10.0.x before 10.0.8 allow SQL Injection.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Produtos afetados
n/a · n/a
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.