O Diário do Analista
Vol. 2 (abr. 2026)  |  Pp. 436–443  |  ISSN 3086-6103

PHP2Shell + Fragnesia: cadeia de exploração dá root em firewalls Palo Alto PAN-OS com interface de gerenciamento exposta

Sumário executivo

Severidade: Crítica  |  Exploração ativa: confirmada pelo fabricante  |  Correções: disponíveis para todas as linhas afetadas  |  Atualizado em: 30/10/2026

Um ator com indícios de nexo chinês encadeou as duas vulnerabilidades de RCE no PHP conhecidas como PHP2Shell (CVE-2026-109618 e CVE-2026-109619) com a escalada de privilégio local Fragnesia, no kernel Linux (CVE-2026-46300). Com isso, obteve root, sem autenticação, em uma única requisição HTTPS contra a interface web de gerenciamento do PAN-OS. Segundo a Dream Research, a cadeia completa leva menos de 15 minutos, desde a conexão até o webshell persistente.

A campanha comprometeu 25 servidores entre 23 e 24 de outubro de 2026: 24 firewalls de perímetro e um servidor interno de gerenciamento de firewalls. Os alvos ficavam nos EUA, Japão, Taiwan e Coreia do Sul. Em um ambiente ligado ao governo dos EUA, o atacante pivotou até o Active Directory, decifrou a credencial LDAP da conta de serviço do firewall e enumerou todo o diretório. A Palo Alto confirmou a exploração ativa em 28/10, e a Unit 42 verificou de forma independente as ferramentas e os resultados em 29/10, rastreando a atividade como CL-UNK-1280.

O vetor é uma interface de gerenciamento acessível pela internet. Quem expõe o gerenciamento de PAN-OS ou Panorama ao IPv4/IPv6 público deve tratar o equipamento como potencialmente comprometido, e não apenas como vulnerável. Aplicar o hotfix interrompe a cadeia, mas não remove implantes já instalados.


Ficha técnica

Campo PHP2Shell (CVE-2026-109618 e CVE-2026-109619) Fragnesia (CVE-2026-46300)
Componente Interpretador PHP (session.upload_progress e tratamento de OOM via longjmp()) Kernel Linux, subsistema XFRM ESP-in-TCP
Tipo RCE não autenticado Escalada de privilégio local
CVSS 9.2 (CVSS 4.0); 8.7 CVSS-B no advisory da Palo Alto 7.8 (CVSS v3, estimativa pública)
Correção PHP 8.5.12, 8.4.27, 8.3.36 e 8.2.35 Kernels de distribuição desde maio de 2026
CISA KEV 26/10/2026* 28/10/2026*
EPSS Pendente** Pendente**
     

 

Contexto PAN-OS Detalhe
Produtos afetados PAN-OS 10.2, 11.1, 11.2, 12.1 e 12.2 (PA-Series e VM-Series) e Panorama
Superfície Interface web de gerenciamento (HTTPS UI e XML API), inclusive interface de dataplane com management profile
Não afetados GlobalProtect e Captive Portal, segundo o fabricante
PHP embarcado 8.0.30 (12.1 e 12.2) e 7.4.33 (11.1), segundo a Dream; corrigido apenas pelo hotfix do PAN-OS
Cluster de atividade CL-UNK-1280 (Unit 42): falante de chinês, fuso UTC+8; nenhum ator nomeado

* Datas reportadas pela Cybersecurity Dive e pela The Next Web e ainda não conferidas diretamente no catálogo da CISA. Confirme no KEV Catalog antes de usar para fins de SLA.
** Não verificado no momento da redação. Consulte a API EPSS da FIRST.

Versões corrigidas do PAN-OS / Panorama

A correção depende da maintenance release em uso, não apenas do ramo. Segundo o The Hacker News, em 30/10/2026 havia hotfix publicado para todas as linhas abaixo. Confira o advisory oficial.

Ramo Corrigido em (≥)
12.2 12.2.4-h1
12.1 12.1.4-h13, 12.1.7-h11, 12.1.10-h3
11.2 11.2.4-h23, 11.2.7-h23, 11.2.10-h16, 11.2.13-h4, 11.2.16-h1
11.1 11.1.4-h38, 11.1.6-h40, 11.1.7-h12, 11.1.10-h36, 11.1.13-h16, 11.1.16-h4
10.2 10.2.7-h39, 10.2.10-h42, 10.2.13-h27, 10.2.16-h12, 10.2.18-h13

Como a campanha funcionou

A Dream recuperou o kit completo do operador: um exploit PHP2Shell próprio e não público, adaptado ao PAN-OS, listas de alvos, logs de exploração e cerca de 40 scripts de pós-exploração. O exploit precisa de offsets de memória específicos de cada versão. O atacante tinha 11 perfis de versão, dos quais apenas um estava calibrado em laboratório; os demais eram provisórios, calculados a partir do binário libphp.so.

  1. Exaustão de memória (~383 MB): POSTs multipart com nomes de arquivo enormes e dados de progresso de sessão forçam um layout de heap previsível.
  2. Vazamento de informação: uma leitura fora dos limites devolve, no cabeçalho Set-Cookie, o endereço base de libphp.so.
  3. Referência obsoleta (~500 MB): uma segunda pressão de memória deixa uma referência pendente que pode ser forjada.
  4. Execução: uma entrada de HashTable forjada aponta o destrutor para system(), e o comando roda como nobody.
  5. Root via Fragnesia: como o SELinux confina httpd_t, o exploit escreve no page cache de /etc/pam.d/su, trocando as regras por pam_permit.so. A partir daí, su root funciona sem senha.

O funil de alvos foi o seguinte: cerca de 19.000 firewalls PAN-OS com gerenciamento exposto, descobertos via FOFA; cerca de 5.000 com versão identificada; 240 filtrados por país (EUA, JP, TW, KR) e por versão compatível; e 24 com root obtido. Em 22 deles, o atacante apenas plantou o webshell e os deixou estacionados, sem túneis. Os dois pertencentes ao ambiente governamental receberam um túnel SSH reverso de 8 portas, com acesso a DCs (LDAP, LDAPS, RDP), ao servidor de gerenciamento, aos gateways GlobalProtect e a um proxy SOCKS5, e persistência via systemd e rc.local. Pelo túnel, o servidor interno de gerenciamento foi explorado com a mesma cadeia, menos de 90 minutos depois.

No Active Directory, estão confirmadas a decifração da senha LDAP armazenada na configuração e a enumeração completa de usuários e grupos. Foram tentados, com resultado desconhecido: password spraying (o domínio tinha lockoutThreshold=0), criação de contas de usuário e de máquina (via MachineAccountQuota padrão), extração de chaves de assinatura SAML do Keycloak e busca de bypass no SSO. O atacante também coletou chaves privadas do firewall: replicação HA, certificados TLS e autenticação do dispositivo.


Sobre o uso de IA

A infraestrutura do operador tinha o Claude Code instalado, uma plataforma ofensiva chamada aiscan configurada com os modelos DeepSeek e Kimi (montada em 08/10/2026, segundo a Dream) e chaves de API do FOFA. A própria Dream afirma não ter evidência direta de que essas ferramentas escreveram o exploit ou os scripts. Ela infere assistência de IA pelo estilo e pela consistência do código e descarta que se trate de um ataque autônomo. O dado operacionalmente relevante é outro: o tempo entre a correção upstream (21/10) e a exploração em produção (23/10) foi de dois dias.


Ações priorizadas

1. Imediato: eliminar a exposição

Remova o acesso à interface de gerenciamento a partir da internet e restrinja-o a IPs internos confiáveis. Isso inclui interfaces de dataplane com management profile anexado. Para verificar a exposição a partir de um host externo, use o comando abaixo:

# Retorno 200/302 indica UI de gerenciamento alcançável pela internet
curl -sk -o /dev/null -w '%{http_code}\n' https://<IP_PUBLICO>/php/login.php

Inventarie ainda as versões em operação:

> show system info | match sw-version

2. Em até 24h: aplicar o hotfix

Atualize para a versão corrigida da sua maintenance release, conforme a tabela acima. Firewalls e Panorama compartilham a mesma linha de correção. Segundo o advisory, o hotfix cobre também uma falha de Brotli no Node.js.

3. Enquanto o hotfix não for aplicado: proteção por assinatura

O Threat ID 543004 (Advanced Threat Prevention Plus, desde 20/10/2026) e as demais assinaturas listadas no advisory só inspecionam o tráfego de gerenciamento se ele passar por uma porta de dataplane com descriptografia habilitada. Tráfego direto à porta MGT dedicada não é inspecionado.

4. Se o gerenciamento esteve exposto desde 17/10: presumir comprometimento

Clientes PAN-OS não têm acesso ao sistema de arquivos como root. Por isso, a verificação de integridade dos artefatos de host (tabela de IOCs) deve ser feita com o TAC. Gere um tech support file e abra um chamado. Em caso de comprometimento confirmado, siga a orientação do TAC para reimagem ou private data reset e trate como expostos todos os segredos armazenados no equipamento.

> show admins all
> show log system direction equal backward
> show log config direction equal backward
> request tech-support dump

5. Caça na rede (fora do firewall)

Procure POSTs anômalos de centenas de MB contra o IP de gerenciamento (Zeek http.log):

zcat http.*.log.gz | zeek-cut ts id.orig_h id.resp_h method uri request_body_len \
  | awk '$3=="<IP_MGMT>" && $4=="POST" && $6>100000000'

Procure também SSH de saída originado no IP de gerenciamento do firewall, que é um indicador do túnel reverso (NetFlow/nfdump):

nfdump -R /var/cache/nfdump -o long \
  'src ip <IP_MGMT> and dst port 22 and not dst net 10.0.0.0/8 and not dst net 172.16.0.0/12 and not dst net 192.168.0.0/16'

Clientes Cortex XDR/XSIAM podem usar as consultas XQL publicadas pela Unit 42, incluindo a busca por Threat ID 543004 nos threat logs do NGFW.

6. Identidade: conter o pivô para o AD

Rotacione a senha da conta de serviço LDAP usada pelo firewall ou Panorama, além de chaves e certificados armazenados no dispositivo (TLS, HA, SAML). No perfil SAML do PAN-OS, habilite a validação do certificado do IdP. Verifique a política de bloqueio e a cota de contas de máquina:

Get-ADDefaultDomainPasswordPolicy | Select-Object LockoutThreshold
Get-ADObject (Get-ADDomain).DistinguishedName -Properties ms-DS-MachineAccountQuota |
  Select-Object ms-DS-MachineAccountQuota

Procure contas de usuário e de máquina criadas desde 17/10:

$d = Get-Date '2026-10-17'
Get-ADUser     -Filter {whenCreated -ge $d} -Properties whenCreated | Select Name,SamAccountName,whenCreated
Get-ADComputer -Filter {whenCreated -ge $d} -Properties whenCreated | Select Name,whenCreated

Nos DCs, revise os eventos 4720 (usuário criado), 4741 (computador criado) e picos de 4625/4771 originados do IP do servidor de gerenciamento de firewalls, que indicam spraying.

7. Demais servidores Linux: Fragnesia

Fora do PAN-OS, o Fragnesia continua sendo um LPE determinístico com PoC público. Se você não aplicou o kernel corrigido da sua distribuição desde maio, faça isso agora. Como mitigação temporária, se a carga de trabalho não depender de IPsec ESP ou AFS/rxrpc:

printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' \
  | sudo tee /etc/modprobe.d/fragnesia.conf
sudo modprobe -r esp4 esp6 rxrpc
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'   # descarta páginas de cache possivelmente adulteradas
grep -n 'pam_permit' /etc/pam.d/su              # não deve retornar nada em configuração padrão

8. Notificação

Organizações brasileiras com indício de comprometimento devem notificar o CERT.br e o CSIRT setorial, quando houver. Nenhum alvo brasileiro foi relatado nesta campanha, mas o operador mantém a lista global de cerca de 19.000 dispositivos já identificados e pode voltar a ela à medida que desenvolve perfis para outras versões.


Indicadores de comprometimento

Tipo Indicador Contexto
Arquivo /unauth/php/change_password.php Webshell PHP de 103 bytes executando como root, em diretório publicamente acessível
Diretório /usr/local/lib/.panops/ Scripts do túnel reverso; persistência via unidade systemd e rc.local
Arquivo alterado /etc/pam.d/su contendo pam_permit.so Resultado da escrita no page cache via Fragnesia
Ferramenta iox Utilitário chinês de tunelamento encontrado no kit
Rede POSTs multipart de ~383 MB e ~500 MB contra a UI de gerenciamento (até ~900 MB por alvo) Fases de exaustão de memória do exploit
Rede SSH de saída e proxy SOCKS5 a partir do IP de gerenciamento do firewall Túnel reverso de 8 portas
Assinatura Threat ID 543004 Advanced Threat Prevention (demais IDs no advisory)

Lacuna: até a data deste alerta, nem a Dream nem a Unit 42 publicaram IPs de infraestrutura do operador ou hashes de artefatos. A Dream remete os IOCs completos ao material da Palo Alto. Atualizaremos este alerta se forem divulgados.


Linha do tempo

  • 08/10: plataforma aiscan configurada pelo operador (Dream)
  • 17/10: primeiras tentativas de exploração do PHP2Shell em honeypots da Amazon, antes da divulgação. Não há evidência de que seja o mesmo operador.
  • 20/10: Threat ID 543004 publicado
  • 21/10: PHP publica as correções; Palo Alto publica o advisory sem versões corrigidas
  • 23/10, 18:14 UTC: primeiro firewall governamental com root obtido (o equipamento travou e não voltou)
  • 24/10, 10:09 UTC: segundo firewall governamental com root; 11:35 UTC, servidor interno de gerenciamento comprometido via túnel
  • 26/10: Dream publica a investigação
  • 27/10: advisory passa a listar versões corrigidas
  • 28/10: Palo Alto confirma exploração ativa
  • 29/10: Unit 42 verifica de forma independente; Dream atualiza o post e nomeia o PAN-OS
  • 30/10: hotfixes disponíveis para todas as linhas afetadas

Notas do autor

A cobertura da imprensa contém erros que vale não reproduzir. Uma matéria grafou “CVE-2026-109169” no lugar de 109619 e apontou o link do Fragnesia para “CVE-2026-4300”. Fragnesia é o nome da vulnerabilidade de kernel, não de um produto. O índice de “~0,02% da base instalada” vem da Palo Alto e refere-se aos clientes com gerenciamento exposto e impactados. A atribuição à China apoia-se em seleção de alvos, ferramentas, idioma e fuso horário, e nenhum ator foi nomeado.


Referências

Tags: , , , , , .

Categorias: Alerta, Ataques, Network, Palo Alto, Patches, PHP, RCE, Remote Attack, Roteador.