PHP2Shell Checker

Alerta crítico · divulgado em 21 out 2026

Seu PHP está exposto
ao PHP2Shell?

Duas falhas no core do PHP permitem executar código no servidor sem login. Cole a URL do site e veja, em segundos, se ele roda PHP, em qual plataforma e se a versão exposta já tem a correção.

  • CVE-2026-109618
  • CVE-2026-109619
  • CVSS 9.2 · crítico
  • Requisições comuns, como abrir o site. Nada é armazenado.

Versões corrigidas

Atualize para uma destas.
E reinicie todos os workers.

Só a atualização resolve. Depois de instalar, reinicie PHP-FPM, Apache e qualquer worker que ainda esteja com o binário antigo carregado.

PHP 8.5

8.5.12

corrigido

PHP 8.4

8.4.27

corrigido

PHP 8.3

8.3.36

corrigido

PHP 8.2

8.2.35

corrigido

PHP 8.1 ou anterior

Sem release oficial

Fora de suporte. O projeto publicou backports mínimos em código-fonte para 7.4, 8.0 e 8.1, e distribuições LTS podem ter corrigido o pacote. Confirme com o fornecedor ou migre para uma versão suportada.

EOL

CVE-2026-1096189.2

Corrupção por falta de memória

Quando o PHP estoura a memória no meio do processamento de uma requisição, a limpeza trata dados pela metade como válidos. Isso abre caminho para executar código.

GHSA-w8hw-w9fx-j79w

CVE-2026-1096199.2

Estado que sobrevive entre requisições

Parte do estado de uma requisição continua apontando para memória já liberada. A requisição seguinte, no mesmo worker, usa esse lixo antes de ser reinicializada.

GHSA-6wmf-4rv5-p3rp

O que fazer agora

Quatro passos,
na ordem.

  1. 01

    Atualize o PHP

    Instale 8.5.12, 8.4.27, 8.3.36 ou 8.2.35. Em servidor com pacote da distribuição, use a atualização de segurança do fornecedor.

  2. 02

    Reinicie tudo

    PHP-FPM, Apache e workers. Processo antigo em memória continua vulnerável mesmo com o pacote novo instalado.

  3. 03

    Sem como atualizar hoje?

    Reduza a exposição — não resolve, só ganha tempo:

    • session.upload_progress.enabled = 0
    • fatal_error_backtraces = 0 (PHP 8.5)
    • memory_limit = -1 via php_admin_value
    • post_max_size = 8M (32M com uploads)

    Aplique no php.ini ou no pool FPM, nunca por ini_set() ou .user.ini, e reinicie os workers.

  4. 04

    Fique de olho

    Uploads multipart estranhos e workers caindo nos logs são sinais de tentativa. Em hospedagem compartilhada, cobre o provedor.

Leia antes de concluir

O que o resultado
não prova.

A verificação olha só o que o servidor anuncia. Use como triagem, não como laudo.

“PHP não detectado” quer dizer que estou seguro?

Não. A maioria dos servidores esconde a versão (expose_php = Off), e CDNs como a Cloudflare removem headers. Confira a versão direto no servidor com php -v ou no painel da hospedagem.

O Wappalyzer mostra versão. Por que aqui não?

O Wappalyzer mostra a versão do WordPress, do Elementor e de plugins, que estão no HTML da página — aqui também mostramos. A versão do PHP só aparece se o servidor anunciar no header X-Powered-By. Quando ele esconde (o mais comum), nenhuma ferramenta externa consegue ver, e o resultado vem como “PHP confirmado, versão oculta”.

Deu “PHP confirmado, versão oculta”. Estou vulnerável?

Provavelmente sim. Todas as versões do PHP lançadas antes das correções de 21/10/2026 são afetadas, então o site só está protegido se a hospedagem já atualizou e reiniciou o PHP. Confira a versão no painel (no WordPress: Ferramentas → Saúde do site → Informações → Servidor) ou use o botão que copia uma mensagem pronta para o suporte da hospedagem.

Deu “verificar com o vendor”. E agora?

O build é de uma distribuição (Ubuntu, Debian, RHEL, Alma, Rocky…). Elas receberam os patches antes e costumam corrigir sem mudar o número da versão. Rode a atualização de segurança do sistema e confira o changelog do pacote.

Deu “corrigido”. Posso esquecer?

O header vem do processo que respondeu. Se houver vários servidores atrás de um balanceador, outros nós podem estar desatualizados. Vale conferir cada um.

Isso testa a falha de verdade?

Não, e de propósito. Explorar envolve forçar falta de memória e estado corrompido no servidor — arriscado até para testar. Aqui são requisições comuns: abrimos a página como um navegador e, quando a versão está oculta, consultamos com HEAD até duas rotas públicas que sempre executam PHP (no WordPress, /wp-login.php e /wp-json/).

O que vocês guardam da verificação?

Nada. A URL é usada só para as requisições e o resultado volta direto para a sua tela. O HTML é analisado na hora e descartado, e valores de cookies nunca são exibidos — só o nome.

Posso verificar qualquer site?

Verifique sites que você administra ou tem autorização para avaliar. A requisição se identifica como PHP2Shell-Checker/1.0.

Passe adiante

Quem cuida de site PHP
precisa saber hoje.

Mande para o time, para o cliente, para quem administra a hospedagem. Leva dez segundos para verificar.

Conhecer a baimadev