CVE-2019-1579
Prioritize patching. It under exploitation confirmed by CISA and has a public proof of concept.
Apply updates per vendor instructions.
Summary
Vulnerabilidade de format string pré-autenticação no daemon sslmgr do GlobalProtect (Portal e Gateway) do PAN-OS, que permite execução remota de código sem nenhuma credencial. É crítica porque o GlobalProtect é a interface SSL VPN exposta diretamente à internet — comprometer o sslmgr dá acesso root ao appliance que guarda a borda da rede corporativa. Está no catálogo KEV da CISA com exploração confirmada, mas a explicação em CVSS de AC:HIGH não é acessório: montar o exploit funcional exige fingerprinting preciso de versão e endereços de binário, então não é um ataque trivial de "apontar e disparar".
Technical detail
A falha (CWE-134, format string; o advisory do fornecedor classificou como CWE-20/Improper Input Validation) está no daemon sslmgr, que trata o handshake SSL entre o servidor GlobalProtect e os clientes e é exposto pelo reverse proxy Nginx no path /sslmgr. Durante a extração de parâmetros da requisição, o valor do campo scep-profile-name é passado diretamente como string de formato para snprintf, em vez de ser tratado como dado. Isso permite injetar especificadores de formato (%n, %c, %p, %hn) que o atacante controla totalmente via corpo do POST.
Pesquisadores da DEVCORE demonstraram que o especificador %n permite crashar o serviço, e %c com contadores grandes permite um side-channel de tempo (o snprintf repete internamente o número de vezes indicado) para verificar a vulnerabilidade sem derrubar o daemon — útil porque há um watchdog monitorando o sslmgr e crashes são visíveis. A exploração completa usa combinações de %n e %hn para sobrescrever entradas na GOT (Global Offset Table), redirecionando, por exemplo, o ponteiro de strlen para o endereço da função system() na PLT (Procedure Linkage Table), transformando o sslmgr em uma webshell.
O ponto crítico é que os offsets de GOT/PLT variam por versão e build do binário, então o exploit não é genérico — precisa ser calibrado para a versão exata do alvo, identificável remotamente por headers Last-Modified de recursos estáticos (ex.: /global-protect/portal/css/login.css para a série 8.x, /images/logo_pan_158.gif para a série 7.x). Isso explica o AC:HIGH no vetor CVSS.
How it’s exploited
O vetor é uma requisição HTTP POST não autenticada para o path /sslmgr, exposto publicamente sempre que a interface GlobalProtect Portal ou Gateway está habilitada — não há login, VPN estabelecida ou qualquer interação do usuário necessária. O único pré-requisito real é ter a versão vulnerável do PAN-OS com GlobalProtect habilitado e acessível pela internet; equipamentos sem GlobalProtect ativado não são afetados, segundo o próprio fornecedor.
Na prática, o atacante primeiro identifica a versão exata do appliance via fingerprinting de assets estáticos, depois envia um payload de format string calibrado para os offsets de GOT/PLT daquela build específica, sobrescrevendo um ponteiro de função para redirecionar execução para system() com um comando arbitrário. O resultado final é execução de comando como usuário do processo sslmgr no appliance, com acesso à rede interna atrás da VPN.
A falha está no catálogo KEV da CISA (adicionada em 2022-01-10, prazo de correção 2022-07-10), confirmando exploração em ambiente real, com PoC pública disponível desde a divulgação da DEVCORE em julho de 2019 no contexto de sua pesquisa sobre SSL VPNs líderes de mercado (apresentada na Black Hat/DEF CON daquele ano).
Versions
How to protect
A correção definitiva é atualizar para PAN-OS 7.1.19 ou posterior, 8.0.12 ou posterior, ou 8.1.3 ou posterior — a série 9.0 nunca foi afetada. O fornecedor trata isso como fix silencioso já presente em releases de manutenção anteriores ao CVE ser formalmente atribuído.
Se a atualização não for possível de imediato, o fornecedor recomenda aplicar o content release de Threat Prevention 8173 ou posterior e confirmar que threat prevention está habilitado e sendo enforced no tráfego que passa pela interface GlobalProtect Portal/Gateway — isso funciona como controle compensatório, mas depende de licença de Threat Prevention ativa e de assinaturas atualizadas, e não elimina a vulnerabilidade no binário. Ambientes que não têm GlobalProtect habilitado não estão expostos a este CVE especificamente, mas isso não deve ser tratado como mitigação — é apenas ausência de superfície de ataque para esta falha pontual.
Restringir o path /sslmgr por IP de origem ou desabilitar a interface GlobalProtect quando não estritamente necessária reduz a superfície exposta, mas não é substituto para o patch, já que qualquer exposição residual à internet mantém o risco.
How to detect
Em logs de acesso do Nginx/reverse proxy do appliance, procurar requisições POST para o path /sslmgr contendo, no corpo, o parâmetro scep-profile-name (ou outros parâmetros como appauthcookie, host-id, user-email) com especificadores de formato como %n, %c, %p, %hn ou sequências como %$p — esse padrão não ocorre em tráfego legítimo. Tempos de resposta anormalmente altos para requisições a esse endpoint também podem indicar tentativas de verificação via side-channel de tempo (uso de %c com contadores grandes), técnica documentada pelos próprios pesquisadores para testar a falha sem crashar o serviço. Crashes ou reinícios inesperados do processo sslmgr (via watchdog) no mesmo período são um sinal adicional de tentativa de exploração falha ou de reconhecimento.