O que aconteceu realmente com PHP2Shell e como afeta um site em WordPress?

  • Autor Autor CardexXx+
  • Data de início Data de início
Este tópico foi traduzido automaticamente do espanhol. Ver original
CardexXx+

CardexXx+

Beta
Usuario nuevo
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Recentemente foram descobertas duas vulnerabilidades críticas no PHP, que poderiam permitir que um atacante execute código em um servidor vulnerável sem necessidade de iniciar sessão.

Pelo que entendo, o problema não está diretamente no WordPress, mas sim no PHP, que é a linguagem sobre a qual o WordPress funciona.

Minha dúvida é: Como posso saber se meu site WordPress está realmente afetado? Basta atualizar a versão do PHP no hosting ou é preciso revisar algo mais? Que medidas recomendam tomar para corrigir e comprovar que o site não tenha sido comprometido?
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
"PHP2Shell" refere-se a duas vulnerabilidades críticas (CVE-2026-109618 e CVE-2026-109619) descobertas no núcleo do PHP, não no WordPress ou em seus plugins. Ao permitir a execução remota de código sem necessidade de autenticação, qualquer servidor que utilize uma versão afetada do PHP está em risco, independentemente de qual CMS execute.

Para se proteger, atualizar o WordPress não é suficiente; você deve atualizar o interpretador PHP do seu servidor. As versões corrigidas são PHP 8.5.12, 8.4.27, 8.3.36 e 8.2.35. Se você usa uma hospedagem compartilhada, entre em contato com seu provedor para confirmar se já aplicaram os patches ou se você deve alterar a versão a partir do seu painel de controle (ex. cPanel/DirectAdmin).

Se você suspeita que seu site foi comprometido, procure sinais como:
  • Redirecionamentos inesperados ou conteúdo estranho.
  • Arquivos .php novos ou suspeitos em suas pastas.
  • Consumo incomumente alto de recursos (CPU/RAM).
  • Novos usuários administradores que você não criou.

Recomenda-se realizar uma varredura de segurança com ferramentas como Wordfence ou Sucuri e, diante de qualquer dúvida de comprometimento, restaurar o site a partir de um backup limpo e alterar todas as senhas (WordPress, banco de dados, FTP e painel de hospedagem).
 
Interessante
 
Sim, você está no caminho certo: a falha está no PHP. Seu WordPress pode ter o core e os plugins atualizados e continuar exposto se o interpretador que executa o site não tiver o patch. Mas mudar de versão no seletor da hospedagem também não demonstra, por si só, que já esteja corrigido.

Vou te contar como abordei isso, porque na SYSDOP passamos dois dias intervindo em servidores por causa disso e, para completar, ainda vieram os avisos de Node.js e Java. Foram incidentes distintos, cada um com sua revisão; ter WordPress não significa que você também esteja usando esses outros runtimes.

A primeira coisa foi identificar qual PHP cada domínio executava de fato. Em um mesmo servidor você pode ter vários ramos, FPM, LiteSpeed e versões privadas usadas pelo próprio painel. O «php -v» do console pode mostrar uma versão diferente da que serve o seu site. Por isso verifiquei o handler, o binário e o pacote correspondente a cada caso, em vez de dar o servidor como coberto com uma única consulta.

Aí apareceu uma armadilha importante: alguns provedores incorporaram a correção mantendo a versão base do PHP. No CloudLinux, por exemplo, tive que verificar a revisão do pacote e seu changelog para confirmar os CVE-2026-109618 e CVE-2026-109619. Ver um número aparentemente antigo não demonstrava que faltava o patch; também não bastava o painel dizer «atualizado».

Enquanto os pacotes chegavam aos diferentes repositórios, apliquei medidas temporárias e revisei as regras do WAF. Mas desativar o progresso de upload de sessões ou bloquear uma forma conhecida do ataque só reduzia a exposição: não tratei isso como substituto do patch.

O próprio aviso do PHP esclarece que não há uma mitigação completa: https://www.php.net/archive/2026.php#2026-10-21-5

Por exemplo, estas foram as diretivas temporárias.

A segunda é exclusivamente para o PHP 8.5; não se deve copiá-la para os ramos anteriores:

INI:
session.upload_progress.enabled = Off

; Solo en PHP 8.5
fatal_error_backtraces = Off

Elas precisam ficar no php.ini que esse PHP carrega, ou na sua configuração de servidor/pool antes de processar as requisições. Colocá-las em ini_set() dentro do WordPress chega tarde; também não adianta confiar no .user.ini com FPM neste caso. Depois é preciso reiniciar todos os workers afetados e verificar os valores efetivos. Desativar o progresso de upload também pode afetar as aplicações que usam essa função.

Depois de atualizar, verifiquei os processos que continuavam atendendo requisições. Um pacote novo em disco pode conviver com processos que ainda têm o binário anterior carregado. Era preciso renovar os processos correspondentes e verificar outra vez. Com o Node.js encontrei justamente esse problema, além de instalações por usuário e contêineres com seu próprio runtime. Com o Java também era preciso revisar qual JVM cada serviço usava e seu caminho de inicialização; atualizar o Java do console não resolvia automaticamente todas as aplicações.

A parte forense trabalhei separada da aplicação dos patches. Revisei logs de acesso e do WAF, erros e quedas de processos, arquivos modificados, tarefas agendadas e acessos persistentes. Houve tentativas bloqueadas, mas uma requisição marcada como suspeita não demonstra por si só que tenham entrado. Até uma resposta 200 exigia olhar o que tinha sido servido e cruzar com os demais logs. No que foi revisado não encontrei evidência de exploração bem-sucedida; isso descreve o alcance daquela revisão, não uma garantia absoluta.

No seu WordPress eu acrescentaria a comparação dos arquivos do core com seus checksums oficiais, a revisão de plugins e temas segundo sua procedência, administradores e senhas de aplicação desconhecidos, e PHP inesperado em uploads. Tudo isso precisa de contexto: um arquivo recente pode ser uma atualização legítima, e encontrar uma string suspeita dentro das assinaturas do Wordfence não transforma esse arquivo em uma backdoor. Um escaneamento ajuda, mas não certifica por si só que esteja limpo.

Se você tem SSH e WP-CLI, a partir da pasta do WordPress pode começar por estas consultas, com o usuário da conta:

Bash:
wp core verify-checksums --include-root
wp plugin verify-checksums --all
wp user list --role=administrator --fields=ID,user_login,user_registered

A primeira compara o core e avisa sobre elementos adicionais na raiz; a segunda confere os plugins para os quais o WordPress.org oferece checksums; a terceira lista os administradores para revisá-los. Um plugin comercial pode não ter checksums lá, e um aviso de arquivo adicional não significa automaticamente malware. Nenhuma dessas três consultas revisa sozinha o servidor inteiro.

Se você está em hospedagem compartilhada, eu começaria pedindo uma confirmação concreta: que o PHP que executa o seu domínio tem os dois CVE corrigidos, qual pacote ou compilação comprova isso e que os processos que o usam foram renovados. Você não precisa pular para outro ramo maior se o seu provedor corrigiu o atual; se ele está fora de suporte e não tem essa correção, aí é preciso planejar a migração verificando a compatibilidade.

E se aparecerem indícios de intrusão, antes de apagar ou restaurar eu preservaria os logs e uma cópia do estado afetado. Restaurar sem corrigir a porta de entrada pode te deixar no mesmo ponto, e trocar senhas enquanto uma backdoor continua lá também não encerra o caso. Também comparei os sites e serviços antes e depois das mudanças: era preciso corrigir a vulnerabilidade e verificar que os sites continuassem funcionando.
 
Voltar
Topo