1. Resumo
Em 21/10/2026, o time de segurança do PHP divulgou duas vulnerabilidades críticas de execução remota de código (RCE):
- CVE-2026-109618: "RCE via OOM corruption".
- CVE-2026-109619: "RCE via stale global state".
Ambas têm CVSS v4.0 9.2 (crítico) e não exigem autenticação. A complexidade de ataque é classificada como alta e há pré-requisitos.
Segundo o php.net, o problema atinge instalações PHP que atendem requests web (por exemplo PHP-FPM, Apache mod_php, php-cgi, FrankenPHP e LiteSpeed).
O que fazer: atualizar o PHP para uma versão corrigida (ou para o pacote da sua distribuição que já inclua a correção). As mitigações temporárias da seção 6 reduzem o risco, mas não substituem a atualização.
2. Links oficiais
- Aviso e downloads: https://www.php.net/
- GHSA da CVE-2026-109618: https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w
- GHSA da CVE-2026-109619: https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp
- NVD CVE-2026-109618: https://nvd.nist.gov/vuln/detail/CVE-2026-109618
- NVD CVE-2026-109619: https://nvd.nist.gov/vuln/detail/CVE-2026-109619
- CVE.org CVE-2026-109618: https://www.cve.org/CVERecord?id=CVE-2026-109618
- CVE.org CVE-2026-109619: https://www.cve.org/CVERecord?id=CVE-2026-109619
- Anúncio na lista oss-security: https://www.openwall.com/lists/oss-security/2026/10/21/6
3. Versões afetadas e corrigidas
| Ramo | Afetado | Corrigido em |
|---|---|---|
| PHP 8.2 | < 8.2.35 | 8.2.35 |
| PHP 8.3 | < 8.3.36 | 8.3.36 |
| PHP 8.4 | < 8.4.27 | 8.4.27 |
| PHP 8.5 | < 8.5.12 | 8.5.12 |
Nota sobre 7.4, 8.0 e 8.1: para esses ramos, o time do PHP publicou apenas backports mínimos em código-fonte, sem release oficial. Quem os usa precisa compilar com o backport ou obter a correção de um fornecedor de suporte estendido (LTS). O ideal é migrar para um ramo com release corrigida.
4. Como checar a versão
Linha de comando
php -v
Atenção: a CLI pode ser uma versão diferente da usada pelo servidor web (FPM, Apache). Confira também o binário do serviço, por exemplo php-fpm8.3 -v.
phpinfo(), com cuidado
Se precisar ver a versão que o servidor web realmente usa, crie temporariamente um arquivo que chame phpinfo(), acesse-o e apague-o logo depois. Nunca deixe uma página de phpinfo() exposta publicamente: ela revela configuração interna do servidor. Se possível, restrinja o acesso por IP enquanto ela existir.
Pacote da distribuição (Debian/Ubuntu)
dpkg -l | grep php
apt-cache policy php8.3 # troque 8.3 pelo seu ramo
Changelog do pacote: o passo mais importante em distros
As distribuições costumam aplicar a correção (backport) sem mudar o número da versão upstream. Então php -v pode mostrar uma versão "menor que a corrigida" e o pacote já estar protegido. Verifique no changelog:
apt changelog php8.3-common | grep -i -E "CVE-2026-109618|CVE-2026-109619"
Se o CVE aparece como corrigido no changelog do pacote instalado, a correção está aplicada. Se não aparece, confira o aviso de segurança da sua distribuição. Em distros, vale o aviso de segurança da distro, não só o número da versão.
5. Como atualizar
Ubuntu / Debian
sudo apt update
sudo apt upgrade
- Use os repositórios oficiais e acompanhe os avisos de segurança da sua distribuição para saber quando o pacote corrigido estiver disponível.
- PPA
ondrej/phpepackages.sury.orgsão repositórios de terceiros. Se você os usa, a atualização depende do que eles publicarem; avalie se confia neles. - Depois de atualizar, reinicie o serviço (por exemplo
php8.3-fpmou o Apache) e confirme a versão/changelog novamente.
cPanel / EasyApache 4
- Atualize os pacotes do EasyApache 4 (
ea-php*) pelo WHM ou pelo gerenciador de pacotes do servidor. - No MultiPHP Manager, confira qual versão cada domínio usa e mova os sites para um ramo que receba a correção.
- Se o seu ramo é 7.4, 8.0 ou 8.1, veja a nota da seção 3 e consulte seu fornecedor.
Docker
- Use a imagem oficial
php:8.x. As tags corrigidas (8.2.35,8.3.36,8.4.27,8.5.12e variantes) já estão no Docker Hub (conferido em 21/10/2026). Prefira fixar a tag exata, comophp:8.4.27-fpm. - Atualize e refaça a imagem sem cache:
docker pull php:8.4.27-fpm # ajuste ao seu ramo/variante
docker build --no-cache -t minha-app:novo .
- Faça o redeploy dos contêineres com a imagem nova e confirme a versão dentro do contêiner (
php -v). - Imagens antigas já em execução não se atualizam sozinhas.
Hospedagem compartilhada
- No painel, verifique a versão do PHP e, se houver seletor, troque para um ramo corrigido (8.2, 8.3, 8.4 ou 8.5).
- Se o provedor ainda não oferece a versão corrigida, envie uma mensagem ao suporte. Modelo:
Olá, equipe de suporte.
Foram divulgadas as vulnerabilidades CVE-2026-109618 e CVE-2026-109619 no PHP (aviso em https://www.php.net/). Gostaria de saber: (1) qual versão do PHP está ativa na minha conta/domínio; (2) se os servidores já receberam a versão corrigida (8.2.35, 8.3.36, 8.4.27 ou 8.5.12) ou o patch equivalente da distribuição; (3) previsão para a atualização, caso ainda não tenha sido feita.
Obrigado.
6. Mitigações temporárias
Fonte: as mitigações abaixo são as que constam no aviso do php.net (https://www.php.net/). Elas são incompletas: somente a atualização resolve.
memory_limit=-1definido viaphp_admin_value, (no pool do FPM ou na configuração do Apache), de modo que a aplicação não possa sobrescrever. Confira se nenhum pool, diretório ou aplicação volta a definir um limite finito. Segundo o aviso, isso remove a falha controlável do limite de memória, mas uma falha de alocação subjacente ainda pode chegar ao caminho vulnerável.post_max_sizeem 8M (ou 32M, se você realmente precisa de uploads), comupload_max_filesizemenor quepost_max_size.- Limites no proxy / servidor web para o tamanho da requisição decodificada, a quantidade de campos de entrada, as partes multipart, a quantidade de cabeçalhos e a profundidade de aninhamento, inclusive em requisições sem
Content-Lengthutilizável. - Limite de memória por cgroup/contêiner, como barreira de disponibilidade, de preferência com uma política que mate só o worker afetado. Não use
RLIMIT_ASnemRLIMIT_DATA. session.upload_progress.enabled=0, definido emphp.ini, na configuração do pool ou do servidor, e reiniciando os workers. Não funciona viaini_setnem via.user.ini.- PHP 8.5:
fatal_error_backtraces=0e reiniciar todos os workers (bloqueia só o caminho confirmado de backtrace fatal). - Remover configurações INI inválidas ou obsoletas aplicadas por request que emitam diagnósticos antes da inicialização. Esconder diagnósticos com
error_reporting,display_errorsou@não ajuda. - Corrigir erros fatais e timeouts de execução que um atacante consiga provocar, inclusive em callbacks, no processamento de upload/importação e na limpeza.
session.upload_progress.enabled=0bloqueia os caminhos de sessão confirmados, mas não outras variantes (php.net).
Lembrete: nada disso substitui a atualização.
7. Checklist final
Cairo Labs · 21/10/2026
Não temos afiliação com o PHP nem com The PHP Group.