← back
CVE-2017-15944criticalunder attackCWE-119CWE-20

CVE-2017-15944

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 9.8epss 98%
from disclosure to weapon3 days
Published on NVDDec 11
1st PoC+3d
metasploitDec 11
CISA KEV+1711d
exploitation probability
98%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
12 public exploit(s)
Action required by CISAfederal deadline: 2022-09-08

Apply updates per vendor instructions.

Summary

Cadeia de três falhas encadeadas na interface de gerenciamento web do PAN-OS (e Panorama) que permite execução remota de código como root sem autenticação. Descoberta por Philip Pettersson e divulgada em dezembro de 2017, está no catálogo KEV da CISA como exploração confirmada. O impacto real depende de um pré-requisito que a nota do fornecedor já cita como mitigação de fato: a interface de gerenciamento precisa estar acessível pela rede do atacante — algo que, segundo o próprio pesquisador, era comum encontrar exposto à internet via Shodan/Project Sonar na época.

Technical detail

O bug #1 é um bypass parcial de autenticação (CWE-287/CWE-020). O servidor web valida sessões checando o cookie PHPSESSID e lendo o arquivo de sessão via função própria `readSessionVarsFromFile()` (em `libpanApiWgetFilter.so`), que usa `strtok()` para parsear o formato serializado do PHP em vez das funções oficiais. O endpoint não autenticado `/esp/cms_changeDeviceContext.esp` aceita um parâmetro `device` que é gravado sem sanitização no arquivo de sessão; injetando a sequência `";` o atacante corrompe o parser e sobrescreve a variável `user`, produzindo um documento XML malformado que a função `panCheckSessionExpired()` interpreta incorretamente como sessão válida.

Com essa sessão falsificada, o bug #2 explora uma injeção XML (CWE-91) no método `Administrator.get`, exposto via RPC JSON em `/php/utils/router.php`. O parâmetro `jsonArgs->id` é concatenado sem sanitização ao atributo `obj` de uma requisição XML enviada ao backend (`pan_cfg_req_ctxt_construct()` em `libpanmp_mp.so`), dando ao atacante controle total sobre os atributos restantes da tag ``. Definindo `async-mode='yes'` e manipulando o atributo `cookie`, o atacante força a criação de um diretório temporário cujo caminho ele controla — incluindo sequências de path traversal (CWE-22) — em `/opt/pancfg/session/pan/user_tmp//`.

O bug #3, não detalhado publicamente em profundidade pelo fornecedor, é um script de cron vulnerável que processa arquivos/diretórios sob caminhos como `/opt/pancfg/mgmt/logdb/traffic/1/` de forma insegura. Nomeando o diretório criado no passo anterior com uma sequência que inclui um comando (via `find ... -exec`), o cron executa esse comando como root na próxima vez que dispara — por padrão a cada 15 minutos, segundo o módulo Metasploit.

O atacante não controla apenas dados de aplicação: controla o valor de um cookie de sessão corrompido, o payload JSON enviado ao RPC, e o nome de um diretório no sistema de arquivos que termina sendo interpretado como comando de shell pelo cron.

How it’s exploited

Pré-requisito real e único: acesso de rede à interface de gerenciamento web (HTTP/HTTPS) do dispositivo, sem necessidade de credenciais. Não há outra pré-condição de configuração — a cadeia inteira é pré-autenticação. A complexidade técnica de encadear os três bugs é alta (é um PoC de pesquisa, não um clique único), mas está totalmente automatizada em um módulo Metasploit público, o que reduz a barreira prática a quase zero para quem tem a interface exposta.

Na prática, o ataque tem duas fases: (1) obtenção de um cookie de sessão corrompido e criação, via RPC JSON, de um diretório com nome malicioso sob um caminho monitorado por cron; (2) espera pela próxima execução do job de cron (até ~20 minutos no módulo Metasploit) para que o comando embutido no nome do diretório seja executado como root. O resultado final é shell reverso com privilégio de root no próprio appliance de firewall — comprometimento total do dispositivo, não apenas de uma aplicação nele.

A CISA lista exploração ativa confirmada no catálogo KEV (adicionada em 2022, bem depois da divulgação original de 2017), o que indica reaproveitamento contínuo do PoC/módulo contra interfaces de gerenciamento ainda expostas e desatualizadas.

Versions

Affected
PAN-OS 6.1.18 e anteriores; PAN-OS 7.0.18 e anteriores; PAN-OS 7.1.13 e anteriores. Segundo o advisory oficial, PAN-OS 8.0 não é afetado por exploração remota não autenticada via esta CVE (mas recebeu patch em 8.0.6 como defesa em profundidade). O PoC público do pesquisador original, por outro lado, lista PAN-OS 8.0.5 e anteriores como vulneráveis na cadeia completa — divergência entre fornecedor e pesquisador.
Fixed in
PAN-OS 6.1.19 e posteriores; PAN-OS 7.0.19 e posteriores; PAN-OS 7.1.14 e posteriores; PAN-OS 8.0.6 e posteriores (patch de defesa em profundidade, segundo o fornecedor).

How to protect

Atualizar para as versões corrigidas é a única solução definitiva. Como paliativo quando a atualização não é imediata, o fornecedor distribuiu o content update 756 com as assinaturas de vulnerabilidade #40483 e #40484 — mas elas só funcionam se aplicadas a uma regra de firewall que proteja especificamente o tráfego destinado à interface de Management, o que exige que essa interface esteja de fato dentro de uma zona controlada por regra (não vale para tráfego direto à interface física de gerência fora do plano de dados).

A mitigação mais eficaz na prática, e que o próprio fornecedor recomenda como boa prática independente do patch, é isolar a interface de gerenciamento: segmentação de rede dedicada ou uso do controle de lista de acesso por IP nativo do PAN-OS, restringindo o acesso apenas ao pessoal de administração. Alternativa quando não é possível segmentar: gerenciar via Panorama com context switching, desabilitando completamente o acesso HTTP/HTTPS de gerenciamento em cada appliance vulnerável — isso elimina o vetor de rede da própria falha.

O que não mitiga: apenas trocar a senha de administrador não ajuda, porque a cadeia inteira contorna a autenticação antes de chegar a qualquer verificação de credencial. Vale notar uma divergência entre fontes: o advisory do fornecedor afirma que PAN-OS 8.0 não é explorável remotamente por usuário não autenticado através desta CVE específica (patch em 8.0.6 é defesa em profundidade), enquanto o PoC público do pesquisador lista '8.0.5 e anteriores' como vulnerável na cadeia completa. Trate 8.0.6 como o piso mínimo de qualquer forma.

How to detect

Nos logs do servidor web de gerenciamento, procurar requisições GET a `/esp/cms_changeDeviceContext.esp` com o parâmetro `device` contendo sequências de aspas simples seguidas de ponto-e-vírgula (padrão `%27";user|s.`) — isso é a assinatura da corrupção de sessão. Em seguida, procurar chamadas POST a `/php/utils/router.php` (ou `/php/utils/router.php/Administrator.get`) com corpo JSON contendo `Administrator.get`, `async-mode='yes'` e sequências de path traversal (`../../../../..`) no campo `cookie` dentro do parâmetro `id`.

No sistema de arquivos, diretórios inesperados sob `/opt/pancfg/session/pan/user_tmp/` ou `/opt/pancfg/mgmt/logdb/traffic/1/` cujo nome contenha metacaracteres de shell (por exemplo `-exec`, `openssl`, `s_client`) indicam a fase final da cadeia, antes da execução pelo cron. As assinaturas de conteúdo #40483 e #40484 do fornecedor, se ativas em uma regra cobrindo o tráfego da interface de Management, também geram alerta correlato.

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.
Palo Alto Networks PAN-OS before 6.1.19, 7.0.x before 7.0.19, 7.1.x before 7.1.14, and 8.0.x before 8.0.6 allows remote attackers to execute arbitrary code via vectors involving the management interface.
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 resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.