Duas falhas graves no próprio PHP, a linguagem por trás de boa parte dos sites da internet, estão sendo exploradas por atacantes desde 21 de outubro. Batizadas de PHP2Shell, as vulnerabilidades CVE-2026-109618 e CVE-2026-109619 receberam nota 9,2 de 10 na escala de gravidade CVSS e permitem executar código no servidor sem nenhum login.
O que são as falhas
Segundo a Kaspersky, o problema está na forma como o PHP lida com uma requisição interrompida, por exemplo por falta de memória: ele deixa dados inválidos num trecho de memória e depois os lê de novo, o que pode levar à execução de código com os privilégios do servidor web. Um dos caminhos de ataque confirmados usa o recurso que mostra o progresso de envio de arquivos (session.upload_progress), que vem ligado por padrão.
Como a falha está no motor do PHP, e não num aplicativo específico, o alcance é amplo. A Recorded Future relata que a empresa de segurança Wiz demonstrou ataques sem autenticação contra WordPress, Drupal e Joomla. Além de executar código, as falhas podem expor dados de memória de outras requisições, como senhas, tokens, chaves de API e certificados.
Vazamento antes da correção
As falhas foram descobertas em agosto pela Wiz Research, em parceria com a Calif e a OpenAI, e informadas de forma privada aos mantenedores do PHP em 24 de agosto. A divulgação estava programada, mas, segundo a Recorded Future, um arquivo com os detalhes técnicos apareceu no VirusTotal às 2h29 (UTC) de 21 de outubro, horas antes do lançamento das correções, que saíram às 13h52 (UTC).
Nesse intervalo os ataques já tinham começado. A Patchstack recebeu relatos de exploração de parceiros de hospedagem às 7h34 (UTC), e o diretor de tecnologia da Cloudflare também disse ter visto ataques. A extensão real das invasões bem-sucedidas ainda não é conhecida.
Quem está vulnerável
- Versões do PHP anteriores a 8.2.35, 8.3.36, 8.4.27 e 8.5.12, segundo o site oficial do PHP.
- Instalações com PHP-FPM, Apache com mod_php, php-cgi, FrankenPHP e LiteSpeed. A Kaspersky aponta o mod_php como o caso de maior risco.
- Ramos antigos, sem suporte, não têm correção oficial. Para as versões 7.4, 8.0 e 8.1 há apenas ajustes mínimos para compilar à mão.
Pelos dados citados pela Recorded Future, o VirusTotal contou cerca de 5,1 milhões de endereços IP rodando PHP, e a maioria das versões expostas é de ramos sem suporte. Esses números não confirmam quantos servidores estão de fato vulneráveis.
O que fazer
- Atualize o PHP, começando pelos servidores expostos à internet. Pacotes de distribuições Linux podem trazer a correção sem mudar o número da versão: confira o histórico do pacote.
- Reinicie o PHP-FPM ou o servidor web e confirme a versão com php -v.
- Em hospedagem compartilhada ou gerenciada, confirme com o provedor se a atualização já foi aplicada.
- Se não der para atualizar já, restrinja o acesso externo e use filtros de requisição (WAF). Isso não substitui a correção.
- Revise os registros desde 20 de outubro em busca de requisições estranhas e de processos do servidor web abrindo terminal, curl ou wget. Se houver sinal de invasão, troque as credenciais que o servidor guarda.