PAN-OS: Arbitrary File Creation Leads to OS Command Injection Vulnerability in GlobalProtect
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply mitigations per vendor instructions as they become available. Otherwise, users with vulnerable versions of affected devices should enable Threat Prevention IDs available from the vendor. See the vendor bulletin for more details and a patch release schedule.
Resumo
Falha crítica (CVSS 10.0) no GlobalProtect do PAN-OS que combina duas falhas — criação arbitrária de arquivo e injeção de comando — permitindo execução de código como root sem autenticação, apenas com acesso de rede à interface GlobalProtect. Foi explorada como zero-day antes da divulgação pública, por um ator sofisticado (rastreado pela Unit 42 como Operation MidnightEclipse), e está no catálogo KEV da CISA. Só afeta PAN-OS com GlobalProtect gateway ou portal configurado — dispositivos sem essa feature habilitada não são vulneráveis, apesar da manchete.
Detalhamento técnico
A vulnerabilidade nasce da combinação de dois bugs distintos (CWE-20 + CWE-77). O primeiro: o serviço GlobalProtect não validava suficientemente o formato do session ID antes de gravá-lo em disco, o que permitia a um atacante armazenar um arquivo vazio cujo nome era escolhido por ele mesmo — em vez de um session ID legítimo. O segundo bug: um job de sistema agendado (cron) confiava que os nomes desses arquivos eram gerados internamente pelo próprio sistema, e usava esses nomes diretamente como parte de um comando shell executado com privilégios elevados.
Como é explorada
O ataque ocorre em duas etapas. Na primeira, o atacante envia, no lugar de um session ID válido, uma string contendo um comando shell malicioso; o GlobalProtect cria um arquivo vazio (0 bytes) cujo nome de arquivo é literalmente esse comando. Isso por si só não causa dano — apenas planta o artefato. Na segunda etapa, um job agendado do sistema roda periodicamente, lê os nomes de arquivo presentes e os utiliza dentro de um comando sem sanitização, executando o payload do atacante com privilégios de root. Não há autenticação, interação do usuário ou configuração não padrão exigida além de ter GlobalProtect gateway/portal ativo — é isso que torna o vetor tão automatizável (há módulo Metasploit, template Nuclei e PoCs públicas). A Palo Alto classificou as tentativas observadas em níveis: Nível 0 (probe sem sucesso), Nível 1 (teste — arquivo 0-byte criado, sem execução confirmada), Nível 2 (exfiltração potencial — cópia do running_config.xml para local acessível via web) e Nível 3 (acesso interativo, com backdoors shell). Segundo a Unit 42, a maioria dos casos respondidos foi de tentativas falhas ou compromissos de Nível 1; casos de Nível 2/3 foram limitados, mas incluíram um backdoor Python identificado como 'Upstyle'.
Versões
Como se proteger
A correção definitiva é atualizar para PAN-OS 10.2.9-h1, 11.0.4-h1, 11.1.2-h3 ou versões posteriores — o fornecedor também publicou hotfixes específicos para praticamente todas as releases de manutenção comumente usadas dentro dos ramos 10.2, 11.0 e 11.1 (lista completa no advisory oficial). Quem não pode atualizar imediatamente deve aplicar os Threat IDs 95187, 95189 e 95191 (disponíveis via assinatura Threat Prevention, pacote de conteúdo 8836-8695 ou posterior) e garantir que o perfil de proteção contra vulnerabilidades esteja de fato anexado à interface do GlobalProtect — sem isso, ter a assinatura instalada não bloqueia nada. Desabilitar o telemetry, que circulou como mitigação nos primeiros dias, deixou de ser considerado eficaz: o próprio fornecedor confirmou que existem caminhos de exploração que não dependem do telemetry estar habilitado. Para dispositivos com indícios de comprometimento, ou que ficaram sem patch/mitigação antes de 25/04/2024, a Palo Alto recomenda um Enhanced Factory Reset (EFR) via TAC, já que uma reinstalação comum pode não eliminar persistência.
Como detectar
Procure arquivos de 0 bytes com nomes anômalos (contendo trechos de comando shell) criados pelo processo do GlobalProtect — indicam Nível 1 (teste), mesmo sem execução confirmada. Verifique se o arquivo running_config.xml foi copiado para um local acessível via requisição web, sinal característico de tentativa de exfiltração (Nível 2). Logs de acesso ao portal/gateway GlobalProtect com session IDs de formato incomum (contendo caracteres de shell) são o indicador mais direto de tentativa de exploração; os Threat IDs 95187/95189/95191, quando ativos, geram alertas específicos para esses padrões. O fornecedor também reengenharizou a coleta de Tech Support Files (TSF) para detectar automaticamente traços de atividade relacionada a essa CVE — útil para triagem forense pós-incidente.