← back
CVE-2019-19781criticalunder attackransomwareCWE-22

CVE-2019-19781

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA, has a working public exploit and 3 threat group(s) use it.

ssvc Actcvss 9.8epss 100%
from disclosure to weapon14 days
Published on NVDDec 27
1st PoC+14d
metasploitDec 17
CISA KEV+677d
exploitation probability
100%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
3 group(s)82 public exploit(s)
Who exploits it3

Groups known to exploit this vulnerability (MITRE ATT&CK attribution).

Action required by CISAfederal deadline: 2022-05-03

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

Affected
Citrix Application Delivery Controller (ADC) e Citrix Gateway (antigos NetScaler ADC/Gateway) nas branches 10.5, 11.1, 12.0, 12.1 e 13.0. O KB CERT/CC (VU#619785) também associa a mesma família de vulnerabilidade a Citrix SD-WAN WANOP Appliance em certos modelos.
Fixed in
Citrix liberou builds corrigidas por versão via CTX267027, em cronograma escalonado entre o final de dezembro de 2019 e o final de janeiro de 2020. As fontes analisadas não trazem a lista completa e exata de números de build por branch — apenas a nota do CERT/CC de que, na branch 12.1, é necessário estar nas builds 51.16/51.19 ou 50.31 (ou superiores) para que o workaround de mitigação funcione corretamente, devido a um bug adicional nessa versão. Para os números de build definitivos por branch, é necessário consultar diretamente CTX267027.

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.

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 Citrix Application Delivery Controller (ADC) and Gateway 10.5, 11.1, 12.0, 12.1, and 13.0. They allow 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 PoCs found82
exploitdbwww.exploit-db.com/exploits/47901unverifiedexploitdbwww.exploit-db.com/exploits/47930unverifiedexploitdbwww.exploit-db.com/exploits/47913unverifiedgithubgithub.com/trustedsec/cve-2019-19781573githubgithub.com/projectzeroindia/CVE-2019-19781367githubgithub.com/mpgn/CVE-2019-19781158githubgithub.com/MalwareTech/CitrixHoneypot120githubgithub.com/cisagov/check-cve-2019-19781109githubgithub.com/mandiant/ioc-scanner-CVE-2019-1978194githubgithub.com/jas502n/CVE-2019-1978185githubgithub.com/citrix/ioc-scanner-CVE-2019-1978158githubgithub.com/aqhmal/CVE-2019-1978111githubgithub.com/w4fz5uck5/CVE-2019-19781-CitrixRCE10githubgithub.com/VladRico/CVE-2019-197817githubgithub.com/ianxtianxt/CVE-2019-197817githubgithub.com/unknowndevice64/Exploits_CVE-2019-197814githubgithub.com/onSec-fr/CVE-2019-19781-Forensic3githubgithub.com/k-fire/CVE-2019-19781-exploit3githubgithub.com/j81blog/ADC-197813githubgithub.com/andripwn/CVE-2019-197812githubgithub.com/DanielWep/CVE-NetScalerFileSystemCheck2githubgithub.com/oways/CVE-2019-197812githubgithub.com/nmanzi/webcvescanner1githubgithub.com/Vulnmachines/Ctirix_RCE-CVE-2019-197811githubgithub.com/r4ulcl/CVE-2019-197811githubgithub.com/redscan/CVE-2019-197811githubgithub.com/L4r1k/CitrixNetscalerAnalysis0githubgithub.com/jamesjguthrie/Shitrix-CVE-2019-197810githubgithub.com/hollerith/CVE-2019-197810githubgithub.com/Castaldio86/Detect-CVE-2019-197810githubgithub.com/awesome-security/citrixmash_scanner0githubgithub.com/b510/CVE-2019-197810githubgithub.com/Azeemering/CVE-2019-19781-DFIR-Notes0githubgithub.com/0xams/citrixvulncheck0githubgithub.com/EliusHHimel/citrix-honeypot0githubgithub.com/pwn3z/CVE-2019-19781-Citrix0githubgithub.com/zerobytesecure/CVE-2019-197810githubgithub.com/tpdlshdmlrkfmcla/CVE-2019-197810githubgithub.com/yukar1z0e/CVE-2019-197810githubgithub.com/becrevex/Citrix_CVE-2019-197810githubgithub.com/mekhalleh/citrix_dir_traversal_rce0githubgithub.com/zgelici/CVE-2019-19781-Checker0githubgithub.com/digitalshadows/CVE-2019-19781_IOCs0githubgithub.com/digitalgangst/massCitrix0githubgithub.com/darren646/CVE-2019-19781POC0githubgithub.com/Roshi99/Remote-Code-Execution-Exploit-for-Citrix-Application-Delivery-Controller-and-Citrix-Gateway-CVE-2010githubgithub.com/SharpHack/CVE-2019-197810githubgithub.com/qiong-qi/CVE-2019-19781-poc0githubgithub.com/autocode07/cisagov__check-cve-2019-19781.4142e02b0vulncheckvulncheck.com/xdb/88021ad0e77bunverifiedvulncheckvulncheck.com/xdb/224739a35737unverifiedvulncheckvulncheck.com/xdb/987910f7a39dunverifiedvulncheckvulncheck.com/xdb/03c8862d3d11unverifiedvulncheckvulncheck.com/xdb/ebfe92f86902unverifiedvulncheckvulncheck.com/xdb/7ab2e8a707c8unverifiedvulncheckvulncheck.com/xdb/02742865c3b9unverifiedcve_referencepacketstormsecurity.com/files/155904/Citrix-Application-Delivery-Controller-Gateway-Remote-Code-Execution.htmlunverifiedcve_referencepacketstormsecurity.com/files/155905/Citrix-Application-Delivery-Controller-Gateway-Remote-Code-Execution-Traversal.htmlunverifiedcve_referencepacketstormsecurity.com/files/155930/Citrix-Application-Delivery-Controller-Gateway-10.5-Remote-Code-Execution.htmlunverifiedvulncheckvulncheck.com/xdb/8d2aa3944ef3unverifiedvulncheckvulncheck.com/xdb/d61ce8c7068dunverifiedvulncheckvulncheck.com/xdb/1b40df6017f7unverifiedvulncheckvulncheck.com/xdb/f2880bad85d1unverifiedvulncheckvulncheck.com/xdb/74d8500487d8unverifiedcve_referencepacketstormsecurity.com/files/155947/Citrix-ADC-NetScaler-Directory-Traversal-Remote-Code-Execution.htmlunverifiedvulncheckvulncheck.com/xdb/9bc4ae3b0270unverifiedcve_referencepacketstormsecurity.com/files/155972/Citrix-ADC-Gateway-Path-Traversal.htmlunverifiedvulncheckvulncheck.com/xdb/5ebd889262c7unverifiedvulncheckvulncheck.com/xdb/f641370d0cf1unverifiedvulncheckvulncheck.com/xdb/5daef00ab695unverifiedvulncheckvulncheck.com/xdb/34b27d809743unverifiedvulncheckvulncheck.com/xdb/0b44b71192ddunverifiedvulncheckvulncheck.com/xdb/553ce4defd35unverifiedvulncheckvulncheck.com/xdb/83c11372ebebunverifiedvulncheckvulncheck.com/xdb/d55aabb8e817unverifiedvulncheckvulncheck.com/xdb/8effe2bc3955unverifiedvulncheckvulncheck.com/xdb/a73543340d72unverifiedvulncheckvulncheck.com/xdb/f3b2f3994c60unverifiedvulncheckvulncheck.com/xdb/eea607d2d8a4unverifiedvulncheckvulncheck.com/xdb/69c8311e600cunverifiedvulncheckvulncheck.com/xdb/103163214ca9unverifiedvulncheckvulncheck.com/xdb/bd1a9acc8fcfunverified
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.