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.
- 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.
- Vazamento de informação: uma leitura fora dos limites devolve, no cabeçalho
Set-Cookie, o endereço base delibphp.so. - Referência obsoleta (~500 MB): uma segunda pressão de memória deixa uma referência pendente que pode ser forjada.
- Execução: uma entrada de HashTable forjada aponta o destrutor para
system(), e o comando roda comonobody. - Root via Fragnesia: como o SELinux confina
httpd_t, o exploit escreve no page cache de/etc/pam.d/su, trocando as regras porpam_permit.so. A partir daí,su rootfunciona 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
- Palo Alto Networks — Security Advisory CVE-2026-109618 / CVE-2026-109619
- Unit 42 — Threat Brief: Critical Vulnerabilities in PHP (atualizado em 29/10/2026)
- Dream Research — Chained PHP2Shell Exploit Roots 25 Servers (atualizado em 29/10/2026)
- PHP — Security advisory, 21/10/2026
- CISA — Known Exploited Vulnerabilities Catalog
- The Hacker News — Attackers Exploit PHP2Shell Flaws in Internet-Exposed PAN-OS Management Interfaces
- Cybersecurity Dive — Palo Alto Networks firewalls compromised in chained attacks using PHP2Shell
- NCSC-NL — Inventário operacional PHP2Shell (GitHub)
Tags: Alerta, CVE, Cybersecurity, Palo Alto, PAN-OS, Vulnerabilidades.
Categorias: Alerta, Ataques, Network, Palo Alto, Patches, PHP, RCE, Remote Attack, Roteador.