CVE-2019-19781
Patch now. It under exploitation confirmed by CISA, has a working public exploit and 3 threat group(s) use it.
Groups known to exploit this vulnerability (MITRE ATT&CK attribution).
Apply updates per vendor instructions.
Summary
Falha de directory traversal (CWE-22) no componente de gerenciamento web dos appliances Citrix ADC e Citrix Gateway (antigos NetScaler ADC/Gateway) que permite a um atacante não autenticado acessar scripts Perl internos sob o caminho /vpns/ e, encadeando isso com injeção no Perl Template Toolkit, executar código arbitrário no sistema. Importa porque não exige autenticação, é explorável remotamente com uma única requisição HTTP, e foi amplamente explorada em massa dias após a divulgação — incluindo por operadores de ransomware.
Technical detail
O bug está na forma como o servidor web interno do ADC/Gateway trata caminhos que misturam o diretório público /vpn/ com o diretório interno /vpns/, que hospeda scripts Perl usados pela interface de VPN SSL. Uma sequência de traversal como /vpn/../vpns/ escapa do sandboxing esperado e alcança arquivos e scripts que deveriam estar restritos a contextos autenticados ou internos.
A Citrix nunca publicou detalhes técnicos completos do bug (o bulletin original é enxuto), mas pesquisa independente (CERT/CC, Positive Technologies, que reportou a falha via Mikhail Klyuchnikov) mostrou que o traversal dá acesso de leitura a arquivos de configuração (ex.: smb.conf) e, mais grave, permite acionar scripts Perl expostos nesse caminho. Um dos vetores demonstrados usa o traversal para escrever um arquivo XML controlado pelo atacante em local acessível pelo Perl Template Toolkit (TT2) usado internamente por esses scripts; o TT2, ao processar o XML malicioso, permite injeção de template que resulta em execução de comandos no sistema operacional subjacente.
O atacante controla o conteúdo do arquivo escrito via traversal e, por extensão, o payload que o motor de template Perl interpreta. Não há necessidade de qualquer credencial — o caminho é acessível antes de qualquer autenticação de VPN SSL. A CISA classifica a falha sob CWE-22 (path traversal), mas o resultado final documentado é RCE completo, refletido no CVSS 9.8/10.0.
How it’s exploited
O vetor é uma requisição HTTP(S) direta ao appliance, sem necessidade de conta, VPN configurada ou qualquer segredo prévio — basta acesso de rede à interface de gerenciamento/gateway exposta. A prova de conceito de verificação mais citada é uma simples requisição GET com traversal (ex.: /vpn/../vpns/cfg/smb.conf) que, se retornar o conteúdo do arquivo em vez de 403, confirma que o sistema está vulnerável. A partir daí, a cadeia de exploração completa (escrita de arquivo via traversal + injeção via Perl Template Toolkit) permite execução de comandos arbitrários no appliance.
A exploração ficou pública quase imediatamente após a divulgação em dezembro de 2019/janeiro de 2020, com scanning massivo documentado (Bad Packets reportou mais de 25.000 instâncias vulneráveis expostas), módulos Metasploit, PoCs públicas e uso confirmado por múltiplos grupos de ameaça, incluindo operações de ransomware — motivo pelo qual a CISA marca a entrada no KEV com a flag 'usada em campanhas de ransomware'. A superfície de exposição típica é a interface de gateway/VPN publicada na internet, que por definição de uso é voltada à internet pública, tornando o volume de alvos expressivo.
O impacto final é execução de código no appliance com privilégios do processo do servidor web, o que na prática significa comprometimento total do dispositivo (visto que ADC/Gateway concentram autenticação de VPN, balanceamento e, em muitos ambientes, integração com Active Directory) — de onde o atacante normalmente pivota para a rede interna.
Versions
How to protect
A correção definitiva é aplicar as builds corrigidas por versão publicadas pela Citrix no bulletin CTX267027. As fontes disponíveis não trazem a tabela completa de números de build por branch (10.5, 11.1, 12.0, 12.1, 13.0); consulte CTX267027 para os números exatos, pois a liberação foi escalonada entre o final de dezembro de 2019 e o final de janeiro de 2020, com branches diferentes recebendo patch em datas distintas.
Se a atualização não for possível de imediato, a Citrix publicou workaround em CTX267679 baseado em política Responder que bloqueia requisições contendo /vpns/ combinadas com padrões de traversal, além de ajuste via nsapimgr_wr.sh. Esse workaround reduz a exposição mas não é equivalente ao patch — cobre os vetores conhecidos na época, não necessariamente variações futuras. Atenção: o próprio CERT/CC nota que esse workaround responder-based não funciona corretamente em builds 12.1 anteriores a 51.16/51.19 e 50.31, devido a um bug distinto nesse branch — nesses casos é necessário primeiro atualizar para uma build não afetada por esse bug secundário antes de confiar na mitigação.
O que não funciona como mitigação: apenas restringir acesso por IP de origem não neutraliza o risco se a interface precisa ficar exposta para uso legítimo de VPN, e WAFs genéricos sem regra específica para o padrão /vpns/../ tendem a não bloquear as variações de encoding usadas nos exploits reais.
How to detect
O teste de verificação mais citado por pesquisadores é uma requisição para um caminho com traversal apontando a um arquivo de configuração conhecido (ex.: /vpn/../vpns/cfg/smb.conf); resposta 403 indica que a mitigação/patch está aplicada, resposta com o conteúdo do arquivo indica sistema vulnerável — isso serve tanto para teste defensivo quanto como assinatura de tentativa de exploração em logs de acesso do próprio appliance ou de qualquer proxy/WAF na frente dele. Em logs de servidor web, procurar por padrões de URL contendo '/vpn/../vpns/' ou variações de encoding equivalentes é o indicador mais direto.
Existe regra Sigma pública (repositório Neo23x0/sigma, arquivo web_citrix_cve_2019_19781_exploit.yml) voltada a esse padrão de exploração, e a CISA publicou alertas (AA20-020A, AA20-031A) com indicadores adicionais de comprometimento observados em campanhas reais, incluindo artefatos deixados no sistema de arquivos do appliance após exploração bem-sucedida — útil para resposta a incidente em appliances que ficaram expostos sem patch durante a janela de dezembro de 2019 a janeiro de 2020.