PHP2Shell: as duas falhas críticas do PHP, explicadas
O PHP2Shell são duas falhas do PHP com nota 9.2 que podem permitir que uma única requisição assuma o controle de um servidor web. Como funcionam, quem está exposto e o que as corrige por completo.
Por Claire Whitmore
6 min de leitura
Traduzido automaticamente do original em inglês, que Claire Whitmore verificou e editou. Prevalece a versão em inglês. Como trabalhamos

Em números
- CVSS v4.0 score PHP gives each flaw
- 9.2
- date CISA listed both flaws as exploited
- Oct 26
- internet-exposed hosts running PHP, per one Shodan search
- 1.9M+
PHP2Shell é o apelido de duas falhas de segurança no PHP, a linguagem de programação que roda o WordPress, o Drupal e muitos outros sites. Elas são rastreadas como CVE-2026-109618 e CVE-2026-109619, e o PHP corrigiu ambas em 21 de outubro de 2026. O PHP dá nota 9.2 de 10 a cada uma e diz que um invasor sem conta pode usá-las pela internet.
O risco aumentou em 26 de outubro. Nesse dia, a Agência de Segurança Cibernética e de Infraestrutura dos EUA (CISA) adicionou as duas falhas ao seu catálogo de bugs sabidamente explorados, segundo a Tenable. As agências civis federais precisam corrigi-las até 29 de outubro.
O que é o PHP2Shell e quem o descobriu
PHP2Shell é um único nome para dois bugs separados. Os relatos divergem sobre quem o criou. O Insikt Group, da Recorded Future, diz que a Wiz Research, trabalhando com a empresa de segurança Calif e com a OpenAI, encontrou as falhas e lhes deu o nome. A Tenable atribui o nome a um vídeo da cadeia de exploração compartilhado pelo pesquisador Kirill Firsov, que deu o crédito a LCFR, da Calif.io.
A PHP Foundation deu crédito à Calif, à OpenAI e à Wiz, entre outros. Tanto a Calif quanto a Wiz disseram ter usado modelos de IA na pesquisa. A Calif diz que o caminho de código afetado mais antigo remonta ao PHP 5.4.0, informa a Tenable.
Como as duas falhas funcionam
Os dois bugs estão no código que o PHP executa no início e no fim de cada requisição web. Esse código roda antes que o código do próprio site, como um plugin do WordPress, tenha chance de agir.
Um servidor web mantém um conjunto de processos PHP de longa duração chamados workers. Cada worker responde a uma requisição, faz a limpeza e pega a próxima. Essa reutilização significa que sobras de uma requisição podem afetar a seguinte.
| CVE | Rótulo do PHP | O que dá errado |
|---|---|---|
| CVE-2026-109618 | Corrupção por OOM | O PHP fica sem memória enquanto monta os dados internos de uma requisição. A etapa de limpeza então trata os dados montados pela metade como válidos. |
| CVE-2026-109619 | Estado global obsoleto | Dados de uma requisição continuam apontando para memória que já foi liberada. A próxima requisição no mesmo worker pode usá-los antes que o PHP os redefina. |
OOM é a sigla de out of memory, ou falta de memória. As duas falhas envolvem o que os programadores chamam de bug use-after-free: o programa continua usando um trecho de memória depois de devolvê-lo. Um invasor que controla o que vai parar nessa memória pode direcionar o programa.
A Recorded Future diz que os bugs incluem um use-after-free no código que lê os dados de progresso de upload da sessão. Esse é um recurso do PHP para acompanhar uploads de arquivos. Ele existe no PHP desde a versão 5.4.0 e vem ativado por padrão, informa a Recorded Future, citando dados do VirusTotal. Um bug relacionado vaza memória do worker. Segundo a Wiz, isso pode expor senhas, tokens de login, chaves de API e certificados das requisições de outras pessoas.
Quem está exposto ao PHP2Shell
O PHP diz que toda instalação que atende requisições web pode ser afetada. Ele cita PHP-FPM, Apache com mod_php, php-cgi, FrankenPHP e LiteSpeed, que são as principais formas de um servidor web executar o PHP. O PHP considera o mod_php, que executa o PHP dentro do próprio servidor web Apache, o de maior risco. Nele, uma única requisição sem login pode disparar um exploit já demonstrado antes de qualquer código da aplicação ser executado.
Um ataque não funciona em todo lugar. A Field Effect, uma empresa de segurança, diz que o sucesso depende da versão do PHP, do sistema operacional, do servidor web, das configurações dos workers e do layout da memória. O ataque “não parece ser universalmente confiável em todos os ambientes afetados”, escreveu a empresa.
Ainda assim, pesquisadores demonstraram tomadas de controle completas de aplicações populares. Segundo a Tenable, a Calif confirmou execução de código sem login em versões específicas do WordPress, Drupal, Joomla e Magento. A Trail of Bits obteve shells, ou seja, controle do servidor por linha de comando, no MediaWiki, Symfony, Laravel e phpBB.
O PHP também se esconde dentro de produtos que as pessoas não associam ao PHP. A Field Effect lista Palo Alto Networks, Citrix, F5, HPE, NetApp, QNAP e Trend Micro entre os fornecedores com produtos afetados. A Help Net Security informou em 22 de outubro que a Palo Alto diz que todas as versões de seus softwares PAN-OS e Panorama são afetadas, ainda sem uma versão corrigida.
A Tenable cita uma busca no Shodan feita por Henk Poley que encontra mais de 1,9 milhão de hosts expostos à internet rodando PHP. Rodar PHP não torna, por si só, um servidor vulnerável.
O que mudou e quando
| Data (2026) | Evento |
|---|---|
| 19 de agosto | A Wiz encontra a primeira falha com ferramentas de pesquisa assistidas por IA |
| 24 de agosto | A Wiz relata as falhas em privado à equipe de segurança do PHP |
| 21 de setembro | O PHP confirma o recebimento do relato e começa a trabalhar nas correções |
| 17 de outubro | Os servidores-isca da Amazon registram uma tentativa de exploração |
| 20 de outubro | O PHP anuncia uma versão de emergência para o dia seguinte |
| 21 de outubro | Detalhes vazam online horas antes de o PHP lançar 8.5.12, 8.4.27, 8.3.36 e 8.2.35 |
| 23 de outubro | O PHP divulga a CVE-2026-115560, uma falha separada no progresso de upload |
| 26 de outubro | A Trail of Bits relata exploits funcionais; a CISA lista as duas falhas como exploradas |
O PHP havia planejado a versão para 22 de outubro, segundo a PHP Foundation, e a antecipou após o vazamento. Cobrimos o aviso prévio e depois a versão de 21 de outubro à medida que aconteciam. A Amazon disse depois que seus honeypots, servidores-isca criados para atrair invasores, flagraram uma tentativa quatro dias antes da divulgação. A empresa não sabe como o invasor obteve os detalhes antes.
No lançamento, a PHP Foundation disse que “não identificou nenhum exploit funcional” no código que circulava online. Isso mudou em poucos dias. A Tenable informa que os honeypots de um pesquisador rodando PHP 8.4.26 foram explorados em 24 de outubro. A Trail of Bits tinha exploits funcionais contra o PHP 8.2 a 8.5 até 26 de outubro. A Recorded Future ainda alerta que “os relatos disponíveis não estabelecem toda a extensão da exploração bem-sucedida nem de comprometimentos confirmados”.
A falha de 23 de outubro é um problema separado que as versões de 21 de outubro não corrigem. O PHP a chama de “um vetor improvável de execução remota de código no progresso de upload da sessão”. Segundo a Field Effect, ela afeta aplicações que alteram session.serialize_handler durante a execução do programa, antes de chamar session_start(), com o progresso de upload ativado.
O que isso significa para os desenvolvedores
Atualizar é a única correção completa. Todo o resto só ganha tempo.
- Atualize e depois reinicie cada worker. As versões corrigidas são 8.5.12, 8.4.27, 8.3.36 e 8.2.35. A Tenable observa que um pacote novo não corrige processos que já estão em execução. A Calif diz que o código antigo fica na memória até uma reinicialização.
- Salve a memória primeiro se um servidor foi sondado. A orientação do Google Cloud, escrita com a Mandiant, diz para capturar a memória dos workers antes de reiniciar. Uma reinicialização apaga as evidências.
- Trate mudanças de configuração como paliativo. A correção provisória do PHP para a primeira falha é
memory_limit=-1, definida de forma que as aplicações não possam sobrescrevê-la. Para a segunda, ésession.upload_progress.enabled=0, maisfatal_error_backtraces=0no PHP 8.5. - Verifique o código de sessão por causa da CVE-2026-115560. Se uma aplicação altera
session.serialize_handlerantes desession_start(), desative o progresso de upload até a próxima versão regular do PHP. - Fique atento a travamentos do SimpleXML. A Tenable relata uma regressão, a issue #24488 do php-src, nas versões 8.4.27 e 8.5.12, que pode travar algumas aplicações com SimpleXML. Uma correção foi mesclada, mas ainda não tinha sido lançada até 26 de outubro.
- Olhe além dos seus próprios servidores. Firewalls, equipamentos de armazenamento e ferramentas de segurança podem trazer o PHP embutido, então leia o comunicado de cada fornecedor. Revise os logs desde 17 de outubro.
- Planeje um upgrade dos branches PHP 7.4 a 8.1. Esses branches recebem apenas patches mínimos de código-fonte, sem versão oficial. Pergunte à sua distribuição ou ao seu fornecedor de suporte sobre um backport.
Fontes
- PHP2Shell (CVE-2026-109618, CVE-2026-109619): Frequently asked questions about critical PHP remote code execution vulnerabilities - Tenable
- PHP2Shell Exploitation: Two Critical PHP Flaws Explained - Recorded Future
- PHP2Shell: Critical PHP vulnerabilities patched, update now! - Help Net Security
- Another PHP issue identified while vendors report affected products - Field Effect
Artigos relacionados

PHP 8.5.12 e 8.4.27 corrigem duas falhas RCE críticas
O PHP lançou em 21 de outubro as versões 8.5.12, 8.4.27, 8.3.36 e 8.2.35 para corrigir duas falhas com nota 9.2. O PHP diz que atualizar é a única correção completa.

PHP agenda correção de emergência para duas falhas críticas com nota 9.2
O PHP lança às 14:00 UTC de 21 de outubro correções para duas falhas críticas com nota 9.2. Só os branches 8.2 a 8.5 recebem patches, e detalhes vazaram um dia antes.

Drupal Commerce Core: falha explorada, atualize para a 3.3.13 agora
Invasores usam a CVE-2026-118539, um desvio de acesso classificado como «Highly critical» no Drupal Commerce Core, para fazer pedidos fraudulentos. Correções: 3.3.13 e 8.x-2.41.