Em resumo
- Vulnerabilidades:
CVE-2026-109618eCVE-2026-109619, conhecidas publicamente como PHP2Shell, publicadas pela equipa de segurança do PHP a 21 de outubro de 2026. - Gravidade: crítica, com classificação de 9.2 (CVSS v4.0) cada uma. Ambas podem permitir a execução remota de código sem autenticação.
- Afetados: instalações PHP que servem pedidos web. Os investigadores encontraram versões afetadas que remontam ao PHP 5.4.
- Correção: atualize o PHP. O projeto PHP afirma que não existem mitigações completas e que a atualização é a única opção segura.
O que são as vulnerabilidades
Ambas as falhas são erros de segurança de memória no ambiente de execução PHP, e não no WordPress, Drupal, Laravel ou noutras aplicações construídas sobre ele. Um site pode estar exposto mesmo quando o seu próprio código e os plugins estão totalmente atualizados.
- Corrupção por falta de memória,
CVE-2026-109618: o esgotamento da memória pode interromper o PHP quando os dados internos do pedido estão apenas parcialmente inicializados. A limpeza do pedido pode então tratar esses dados inválidos como válidos. - Estado de pedido obsoleto,
CVE-2026-109619: o estado interno que pertence a um pedido pode sobreviver à memória que o suporta. Um pedido posterior tratado pelo mesmo processo de trabalho PHP pode utilizar esse estado obsoleto, o que pode expor a memória do processo ou levar à execução de código.
Os investigadores demonstraram a execução remota de código sem autenticação contra o WordPress e o Drupal e, no caso da primeira falha, contra o Joomla. Uma aplicação mínima «Hello World» num ambiente de execução afetado também pode estar exposta.
Quem é afetado
Segundo o aviso de segurança do PHP, os problemas afetam todas as instalações PHP que servem pedidos web, incluindo PHP-FPM, Apache com mod_php, php-cgi, FrankenPHP e LiteSpeed. O Apache com mod_php apresenta o risco mais elevado: um exploit demonstrado desencadeia o ataque com um pedido não autenticado antes de ser executado qualquer código da aplicação.
O PHP 8.1 e versões anteriores já não recebem atualizações do projeto PHP. O aviso inclui ligações para correções mínimas do código-fonte adaptadas ao PHP 7.4, 8.0 e 8.1, mas o ideal é migrar os ambientes de execução mais antigos para uma versão suportada.
Versões corrigidas
As versões anteriores de cada ramo suportado devem ser consideradas vulneráveis.
| Ramo PHP | Vulnerável | Corrigido em |
|---|---|---|
| 8.5 | Anteriores a 8.5.12 | 8.5.12 |
| 8.4 | Anteriores a 8.4.27 | 8.4.27 |
| 8.3 | Anteriores a 8.3.36 | 8.3.36 |
| 8.2 | Anteriores a 8.2.35 | 8.2.35 |
O PHP 8.2 atinge o fim de vida a 31 de dezembro de 2026.
Pacotes das distribuições
As distribuições Linux receberam as correções antecipadamente e publicam pacotes corrigidos com os seus próprios números de versão. Um pacote de uma distribuição pode estar corrigido mesmo quando a sua versão parece mais antiga do que a versão do projeto original. No Ubuntu 24.04 LTS, por exemplo, o pacote corrigido é o 8.3.6-0ubuntu0.24.04.13, e não o 8.3.36.
| Versão do Ubuntu | Pacote | Versão corrigida |
|---|---|---|
| 26.04 LTS | php8.5 | 8.5.4-0ubuntu1.5 |
| 24.04 LTS | php8.3 | 8.3.6-0ubuntu0.24.04.13 |
| 22.04 LTS | php8.1 | 8.1.2-1ubuntu2.28 |
Consulte o aviso de segurança da sua distribuição para obter as versões exatas dos pacotes. O aviso de segurança do PHP pede também aos utilizadores do repositório remirepo que mudem para os pacotes da distribuição ou compilem a partir do código-fonte, porque esse repositório não tinha atualizações no dia do lançamento.
Mitigações provisórias
Se não puder atualizar de imediato, o aviso de segurança do PHP indica definições que reduzem a exposição a vias de ataque específicas. Não tornam uma instalação segura e têm de ser aplicadas no php.ini, no pool PHP-FPM ou na configuração do servidor, seguidas do reinício de todos os processos de trabalho PHP.
- Desative o progresso de carregamento da sessão:
session.upload_progress.enabled = 0. Não confie emini_set()ou.user.inipara este efeito. - Remova o limite de memória do PHP com
memory_limit = -1, definido de forma a que as aplicações não o possam substituir, e utilize antes um limite de memória do contentor ou do cgroup. Não utilizeRLIMIT_ASouRLIMIT_DATA; podem acionar o caminho vulnerável. - Limite o tamanho dos pedidos, por exemplo
post_max_size = 8M, ou32Mquando forem necessários carregamentos de ficheiros, e imponha limites aos pedidos no servidor web ou no proxy. - No PHP 8.5, defina
fatal_error_backtraces = 0.
Ocultar os erros não ajuda. Encare estas definições como uma ponte curta até à atualização, não como uma correção.
Firewalls de aplicações web
A Cloudflare implementou regras WAF geridas para o PHP2Shell antes da divulgação pública, incluindo no seu plano gratuito. Um WAF é uma camada adicional útil enquanto atualiza, mas já se observaram atacantes a alterar os payloads para evitar a deteção, e atualizar apenas o código ou os plugins do site não corrige uma falha do ambiente de execução. Atualize o PHP mesmo que tenha um WAF.
Após a atualização
- Reinicie o PHP: reinicie o PHP-FPM, o Apache ou o servidor de aplicações PHP para que todos os processos de trabalho carreguem o código corrigido.
- Verifique o ambiente de execução que serve o site: a versão do PHP na linha de comandos pode ser diferente da versão que trata os pedidos web, e os servidores executam frequentemente várias versões do PHP em paralelo.
- Verifique todos os servidores e contas de alojamento: é fácil esquecer sites de pré-produção, instalações antigas e servidores secundários.
- Reveja os limites: a correção acrescenta um limite rígido de memória que termina o processo quando é atingido, por isso reveja as definições de memória e de tamanho dos pedidos para pedidos pesados legítimos.
Em alojamento gerido, peça ao seu fornecedor que confirme que o ambiente de execução corrigido está implementado.
Sinais a investigar
Os investigadores enumeram sinais que merecem uma análise mais atenta. Por si só, não provam que um servidor foi atacado.
- Cookies
PHPSESSIDinvulgarmente grandes ou malformados. - Pedidos multipart seguidos de erros de limite de memória ou de respostas HTTP 500 repetidas.
- Falhas inexplicáveis dos processos de trabalho PHP.
Se suspeitar de um comprometimento, atualizar o PHP não remove nada do que um atacante possa ter deixado. Isso exige uma investigação separada.
Como podemos ajudar
A nossa verificação identifica o ambiente de execução PHP que realmente serve o seu site, verifica o estado das correções do fornecedor e entrega-lhe conclusões por escrito com um próximo passo claro. Nada muda no seu servidor até acordarmos o âmbito consigo.
Fontes
- Aviso de segurança do PHP, 21 de outubro de 2026
- Resumo da investigação PHP2Shell
- Aviso de segurança do Ubuntu USN-8948-1
- Cloudflare: proteção WAF para as vulnerabilidades do PHP
Revisto a 22 de outubro de 2026. Este resumo é informação geral, não aconselhamento sobre os seus sistemas. Consulte o aviso de segurança do PHP para obter os detalhes mais recentes.