Diário técnico

php2shell (CVE-2026-109618 / 109619) não pode ser avaliado com php -v: onde os números de versão divergem entre FPM, Docker e distros

Publicado em: 2026-10-22 · Autor: GRAMSHIFT

Versões de CLI e FPM, tags do Docker, backports de distros e o que verificar em hospedagem compartilhada

php2shell (CVE-2026-109618 / 109619) não pode ser avaliado com php -v: onde os números de versão divergem entre FPM, Docker e distros

Esta página foi traduzida por IA a partir do original em japonês. Se houver alguma diferença, a versão em japonês é a que vale: 日本語

Se o PHP que atende as requisições web (PHP-FPM, mod_php do Apache, php-cgi, FrankenPHP, LiteSpeed) for anterior à 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12, ele é afetado pelo CVE-2026-109618 e pelo CVE-2026-109619, conhecidos como php2shell. A correção é atualizar para uma dessas versões (ou, no caso de pacotes de distro, para o pacote corrigido) e reiniciar os processos. O que você precisa verificar não é o php -v local, mas “o PHP que de fato atende a web” e “a versão do pacote instalado”.

Este artigo trata de quatro situações em que julgar apenas pelo número da versão leva a uma conclusão errada. Todos os números e informações de status são de 2026-10-22, e as fontes de cada item estão listadas no final.

O que se sabe em 2026-10-22

ItemDetalhes
CVECVE-2026-109618 (GHSA-w8hw-w9fx-j79w) / CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp)
GravidadeAmbas classificadas como CVSS v4.0 9.2 (Crítica) no comunicado do PHP
Versões corrigidas8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 (lançadas em 2026-10-21)
Versões afetadasVersões anteriores às versões corrigidas acima (conforme os comunicados do GitHub)
EscopoQualquer PHP que atenda requisições web. O comunicado cita PHP-FPM, mod_php, php-cgi, FrankenPHP e LiteSpeed, com o mod_php descrito como o de maior risco. Nos comunicados do GitHub, a exploração foi demonstrada no mod_php, enquanto FPM e FrankenPHP aparecem como “não demonstrado” ou “condicional”. Não demonstrado não significa seguro; portanto, atualize para uma versão corrigida independentemente de como você executa o PHP
8.1 e anterioresSem atualizações do projeto PHP. Backports mínimos do código-fonte foram publicados para 7.4 / 8.0 / 8.1, e algumas distros e fornecedores de LTS podem distribuir correções
8.2Fim do suporte em 2026-12-31 (conforme as notas de lançamento da 8.2.35)

O comunicado do PHP afirma que “a única correção completa é atualizar”. As mitigações para o período anterior à atualização são tratadas mais adiante neste artigo.

Armadilha 1: o php -v e o PHP voltado para a web podem ser diferentes

O php -v digitado via SSH informa a versão do PHP da CLI. As requisições web são atendidas por processos do PHP-FPM ou pelo mod_php carregado no Apache, que são binários e pacotes separados. Se você instalou um PHP mais novo apenas para a CLI, executa várias versões lado a lado ou tem um pool do FPM apontando para outra versão, o lado web pode continuar antigo mesmo quando o php -v mostra uma versão corrigida.

Há várias maneiras de ver a versão real do lado web.

# FPM no Debian / Ubuntu (nomeado por versão)
php-fpm8.3 -v

# FPM em sistemas da família RHEL
php-fpm -v

# Verificar se o mod_php está carregado no Apache
apachectl -M | grep -i php

O método mais confiável é fazer o PHP que realmente executa pela web informar a própria versão. Coloque um arquivo temporário com um nome difícil de adivinhar e apague-o assim que terminar a verificação.

<?php echo PHP_VERSION, ' ', PHP_SAPI;

Se PHP_SAPI for fpm-fcgi, o PHP está rodando sob FPM; apache2handler indica mod_php; cgi-fcgi indica CGI. Evite deixar o phpinfo() exposto, pois isso por si só vaza informações.

A reinicialização é outra etapa fácil de esquecer. Mesmo depois de o pacote ser substituído, os processos do php-fpm ou do Apache já em execução podem continuar rodando o código antigo. Algumas configurações reiniciam automaticamente nas atualizações de pacote; outras não. Após atualizar, reinicie o FPM / Apache e verifique novamente a versão do lado web pelos métodos acima.

Armadilha 2: com Docker, não dá para julgar pelo nome da tag

A imagem oficial php tem “tags móveis”, como 8.3 e 8.3-fpm, cujo conteúdo é substituído, e tags fixas, como 8.3.30, que fixam a versão.

  • Mesmo depois que uma tag móvel passa a apontar para uma versão corrigida no Docker Hub, sua cópia local continua sendo a imagem antiga até você fazer o pull novamente. Os contêineres em execução também continuam usando a imagem antiga até serem recriados. Um Dockerfile com FROM php:8.3-fpm ainda será construído sobre a base antiga se ela permanecer no cache de build.
  • Uma tag fixa continua antiga para sempre, até que você mesmo atualize o número.

Você pode verificar se as tags das versões corrigidas foram publicadas usando a API do Docker Hub.

curl -s "https://hub.docker.com/v2/repositories/library/php/tags?name=8.3.36&page_size=100"

Estes são os resultados da consulta a quatro linhas de lançamento em 2026-10-22 (horários em UTC).

Versão corrigidaTags encontradasQuando surgiram as tags baseadas em Debian (-fpm, -apache etc.)Tags baseadas em Alpine
8.5.1254 (incluindo RC1)2026-10-21 18:59–22:132026-10-21 22:12–10-22 01:05
8.4.2754 (incluindo RC1)2026-10-21 22:09–22:112026-10-21 22:09–10-22 03:58
8.3.36272026-10-21 22:04–22:062026-10-21 22:04–10-22 03:56
8.2.35272026-10-21 21:59–22:012026-10-21 22:00–10-22 00:58

Essa verificação revelou três pontos em que julgar pelos números pode induzir ao erro.

  1. “Atualizado recentemente” não significa “corrigido”. A tag fixa 8.3.35 foi reconstruída durante 2026-10-21, mas o PHP_VERSION dentro dela continuava 8.3.35. Olhe a versão interna, não a data de atualização.
  2. Digests diferentes podem ter o mesmo conteúdo. 8.3 e 8.3.36 tinham digests de tag diferentes (o valor do índice multiarquitetura), mas a imagem amd64 era idêntica e ambas tinham PHP_VERSION=8.3.36. Da mesma forma, em 8.3-fpm / 8.3.36-fpm, 8.4-apache / 8.4.27-apache, latest / 8.5.12, 8.5-fpm e 8.2-fpm, o PHP_VERSION da imagem amd64 era uma versão corrigida.
  3. Não há imagens oficiais corrigidas para 8.1 e anteriores. A 8.1-fpm foi atualizada pela última vez em 2025-12-31.

Para verificar suas imagens locais e os contêineres em execução:

# Versão do PHP de uma imagem já baixada localmente
docker image inspect php:8.3-fpm --format '{{range .Config.Env}}{{println .}}{{end}}' | grep PHP_VERSION

# Fazer o pull novamente e recriar os contêineres
docker compose pull
docker compose up -d

# Se você constrói sua própria imagem, refaça o pull da base e depois o build
docker compose build --pull

# Versão dentro de um contêiner em execução
docker compose exec app php -r 'echo PHP_VERSION, PHP_EOL;'

Substitua app no último comando pelo nome do seu serviço. Cada imagem oficial é construída com um único PHP_VERSION, portanto a versão da CLI dentro de um contêiner coincide com a versão do FPM / Apache desse contêiner (a Armadilha 1 se aplica quando o PHP é instalado diretamente no host).

O FrankenPHP incorpora o PHP, então a versão do FrankenPHP e a versão do PHP embutido são números diferentes. As notas de lançamento do FrankenPHP 1.13.2, lançado em 2026-10-21, informam que as imagens Docker foram construídas com PHP 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 e os binários estáticos com PHP 8.5.12.

Armadilha 3: pacotes de distro são “corrigidos com números antigos”

Ubuntu e RHEL portam apenas as correções para versões mais antigas (backporting). O número exibido pelo php -v continua antigo, então uma verificação numérica como “menor que 8.3.36, portanto vulnerável” marcará como vulnerável um sistema já corrigido. Inversamente, também não se pode confiar no número para ficar tranquilo. Decida com base na versão do pacote e no tracker de segurança de cada distro.

Pacotes corrigidos listados em cada tracker em 2026-10-22 (iguais para os dois CVEs):

DistroPacoteVersão corrigidaFonte
Ubuntu 22.04 (jammy)php8.18.1.2-1ubuntu2.28USN-8948-1
Ubuntu 24.04 (noble)php8.38.3.6-0ubuntu0.24.04.13USN-8948-1
Ubuntu 26.04 (resolute)php8.58.5.4-0ubuntu1.5USN-8948-1
Ubuntu (stonking)php8.58.5.9-0ubuntu2.1USN-8948-1
Ubuntu 14.04 / 16.04 / 18.04 / 20.04php5 / php7.0 / php7.2 / php7.4Disponível pelo Ubuntu Pro (incluindo Legacy Support)USN-8948-2
Debian 12 (bookworm)php8.28.2.35-1~deb12u1DLA-4848-1
Debian 13 (trixie)php8.48.4.27-1~deb13u1DSA-6574-1
RHEL 10php / php8.48.3.36-1.el10_2 / 8.4.27-1.el10_2Red Hat
RHEL 9php (padrão)8.0.30-8.el9_8.1Red Hat
RHEL 9módulo php 8.2 / 8.38.2.35-1.module+el9.8.0… / 8.3.36-1.module+el9.8.0…Red Hat
RHEL 8módulo php 7.4 / 8.27.4.33-8.module+el8.10.0… / 8.2.35-1.module+el8.10.0…Red Hat

Esta tabela mostra diretamente por que apenas os números não bastam. O PHP corrigido do Ubuntu 24.04 é uma versão que começa com 8.3.6, muito abaixo da 8.3.36 do upstream. O PHP padrão do RHEL 9 está corrigido mesmo permanecendo na 8.0.30, embora o upstream não publique mais correções para a 8.0. O Debian passou a usar os mesmos números do upstream (8.2.35 / 8.4.27).

Alguns pacotes ainda não estão corrigidos (em 2026-10-22).

  • O módulo php 8.4 do RHEL 9 consta como “afetado, sem correção”.
  • O Debian forky (testing) tem o php8.4 8.4.26-1, marcado como “vulnerable”. O php8.4 do sid (unstable) é o 8.4.27-1 e está corrigido.

Exemplos de comandos para verificar o seu servidor:

# Debian / Ubuntu: versão instalada e versão disponível
apt-cache policy php8.3-fpm libapache2-mod-php8.3

# Ubuntu: se este CVE está corrigido neste servidor
pro fix CVE-2026-109618
pro fix CVE-2026-109619

# Família RHEL: se existe uma atualização que corrige este CVE e qual é a versão instalada
dnf updateinfo list --cve CVE-2026-109618
rpm -q php-fpm php-cli

Ajuste o nome do pacote (php8.3-fpm etc.) ao seu ambiente. Compare a versão exibida com a “versão corrigida” da tabela acima ou do tracker; se for igual ou superior, a correção está aplicada. Em seguida, conclua a reinicialização e a verificação do lado web descritas na Armadilha 1.

Se você instala o PHP a partir de um repositório de terceiros, e não dos pacotes da própria distro, é preciso acompanhar as atualizações desse repositório. O comunicado do PHP observa que o rpms.remirepo.net, mantido por voluntários, não teria atualizações no dia da divulgação, e recomenda migrar para os pacotes da distro ou para builds próprios.

Armadilha 4: em hospedagem compartilhada e ambientes gerenciados, você não pode atualizar o PHP por conta própria

Em hospedagem compartilhada e ambientes PHP gerenciados, o provedor substitui o runtime do PHP. Aqui também o número sozinho não basta: se o provedor compila o PHP por conta própria ou faz backport de correções, o número de versão pode continuar antigo.

Há três coisas que você mesmo pode fazer.

  1. Verifique a versão do lado web. Use o arquivo temporário da Armadilha 1 para exibir PHP_VERSION e PHP_SAPI e apague-o logo em seguida. Se o painel de controle tiver um seletor de versão do PHP, anote também qual versão você selecionou.
  2. Leia o aviso do provedor e pergunte se não houver nenhum. Pergunte: “Para quais versões do PHP do meu plano as correções do CVE-2026-109618 e do CVE-2026-109619 serão aplicadas, e quando (ou já foram aplicadas)?”. Perguntar pelo número do CVE, e não pelo número da versão, gera uma resposta que também cobre backports.
  3. Se você selecionou uma versão sem suporte, atualize. O projeto PHP não publica correções para 8.1 e anteriores, e o suporte à 8.2 termina em 2026-12-31. A menos que o provedor tenha feito backport das correções, trocar de versão é o caminho seguro.

Situação por provedor de hospedagem (em 2026-10-22)

Em hospedagem compartilhada, o provedor normalmente atualiza o runtime do PHP, e os avisos de muitos provedores dizem que “nenhuma ação é necessária por parte dos usuários”. O usuário tem duas coisas a fazer: conferir o aviso oficial do seu provedor e, caso tenha selecionado uma versão antiga do PHP no painel de controle, decidir se troca para a versão recomendada no aviso (uma que tenha versão corrigida).

A tabela abaixo resume apenas o que está escrito nas páginas oficiais de cada provedor (comunicados e informações de manutenção), parafraseando o texto dos avisos. Os avisos são atualizados conforme o andamento, então confirme sempre a situação real na página oficial citada.

Provedor / serviçoPontos principais do aviso oficialData/hora do avisoFonte
エックスサーバー“Para PHP 8.2–8.5, a aplicação do patch de correção em todos os servidores afetados foi concluída.” Para versões mais antigas, o aviso diz que “os patches de correção estão prontos para algumas versões e serão aplicados em sequência à medida que a verificação for concluída”, e que as demais versões antigas também estão sendo tratadasConforme indicado em 10/22 6:45 (a página foi atualizada até 13:15)メンテナンスの進捗状況
シン・レンタルサーバーA página de comunicados traz o mesmo “andamento da manutenção” do Xserver, mas não encontrei nenhuma declaração que trate especificamente da situação do PHP do Shin Rental Server (confirme com o suporte)-お知らせ
ConoHa WING“Estamos aplicando patches de segurança mantendo a versão do PHP que você usa atualmente.” O aviso diz que, em geral, os usuários não precisam mudar de versão, mas pode ser necessária uma mudança para PHP 5.x e 7.x. O gerenciador de arquivos e o webmail estão temporariamente suspensos por precaução; a exibição do site e o envio/recebimento de e-mails continuam normalmente10/22【重要】PHPの脆弱性への弊社対応について
さくらのレンタルサーバ“Concluímos nossa resposta à vulnerabilidade para todas as versões do PHP selecionáveis em nosso painel de controle.” Informa que “não há nenhuma ação urgente necessária por parte dos clientes” e recomenda migrar, daqui em diante, para a versão mais recente com suporte. O aviso diz que o webmail foi tratado em 10/22 13:45 e que o phpMyAdmin ainda está em andamento10/22 (atualizado 13:45)PHPの脆弱性(CVE-2026-109618、CVE-2026-109619)への対応状況について
ロリポップ!Um aviso de manutenção preventiva anterior ao lançamento das versões corrigidas (o site do serviço, as páginas do usuário etc. serão suspensos em sequência; sites podem ser suspensos ou restringidos sem aviso prévio). Em 10/22, não encontrei um aviso anunciando a conclusão da correção do PHP (confirme com o suporte)10/21【重要】PHPの脆弱性への予防措置に伴うメンテナンス実施のお知らせ
ヘテムル“Para PHP 8.x e PHP 7.4, aplicamos as versões corrigidas oficiais”; para as demais versões, “fizemos nossas próprias correções com base na correção oficial”. Como “algumas funcionalidades (session.upload_progress) foram desativadas em todas as versões”, pede-se que os usuários verifiquem se seus sites funcionam. Como as versões antigas podem não receber mais correções, o aviso recomenda migrar para uma versão mais novaPublicado 10/21 19:44; atualizado 10/22 12:18 e 13:20【一部完了】【重要】PHPの脆弱性への予防措置に伴うメンテナンス実施のお知らせ
mixhost“A aplicação dos pacotes de correção do PHP foi concluída por volta das 10:18 de 22 de outubro de 2026.” “Aplicada sem alterar o número de versão do PHP”; “nenhuma ação é necessária por parte dos clientes.” O aviso recomenda que usuários de versões anteriores ao PHP 8.2 usem uma versão com suporte (8.2 ou posterior)10/22【完了】PHPの重大な脆弱性への対応について
KAGOYANo serviço de servidor de aluguel, o PHP 8.2–8.5 será atualizado em sequência após a verificação das versões corrigidas (versões-alvo ainda sendo definidas). Para servidores dedicados gerenciados, compartilhados e específicos para WordPress, uma correção definitiva ainda está sendo planejada; como medidas provisórias, o aviso sugere considerar tirar os sites do ar ou restringir o acessoPublicado 10/21 18:20; atualizado 10/22 10:35PHPの脆弱性に関する当社サービスへの影響について
Zenlogic(IDCフロンティア)Correções aplicadas durante manutenção emergencial (10/21 22:00–10/22 18:00; o horário de término pode variar). O PHP 5.3 será atualizado para a versão mais recente e não poderá ser revertido; 7.4 e 8.1 podem ser atualizados. O aviso diz que, se ocorrerem problemas de exibição ou de comportamento após a atualização, a correção deve ser feita no lado da aplicação10/21【ホスティング】緊急メンテナンス作業のお知らせ
ColorfulBox“Concluímos, no lado do servidor, a atualização para versões corrigidas mantendo a versão do PHP que você usa atualmente.” O aviso afirma que “não é necessário que os clientes alterem ou troquem a versão do PHP por conta própria”10/22【重要】PHPの脆弱性に対するセキュリティアップデート完了のお知らせ
お名前.com レンタルサーバー“Estamos aplicando patches de segurança mantendo a versão do PHP que você usa atualmente.” O aviso diz que, em geral, não é necessário mudar de versão, mas pode ser necessário para PHP 5.x e 7.x. O gerenciador de arquivos e o webmail estão temporariamente suspensos por precaução10/22【重要】PHPの脆弱性への弊社対応について
CORESERVER(V2)“Concluímos nossa resposta à vulnerabilidade para todas as versões do PHP que oferecemos”; “não é necessária nenhuma ação por parte do cliente, como alterar a versão do PHP.” A manutenção ocorreu de 10/22 0:00 a 11:13 e é informada como concluídaPublicado 10/21 (concluído 10/22)PHP脆弱性の対応(CORESERVER V2)【完了】
XREA“Concluímos nossa resposta à vulnerabilidade para o PHP 7.4 e posteriores (7.4 / 8.0 / 8.1 / 8.2 / 8.3 / 8.4 / 8.5).” Usuários dessas versões não precisam mudar de versão. O aviso não diz nada sobre versões anteriores à 7.4Publicado 10/21 (concluído 10/22 0:50)PHP脆弱性の対応(XREA)【完了】
バリューサーバー“Concluímos nossa resposta à vulnerabilidade para o PHP 7.4 e posteriores.” O aviso diz que usuários dessas versões não precisam mudar de versãoPublicado 10/21 (concluído 10/22 0:50)PHP脆弱性の対応(VALUESERVER)【完了】
ABLENET“Em relação às duas vulnerabilidades identificadas no PHP, realizamos as atualizações de segurança iniciais em nosso ambiente de servidores de aluguel.” O aviso não informa quais versões são abrangidas nem se os usuários precisam tomar alguma ação10/22 13:04PHPの脆弱性に関するセキュリティアップデートの対応について
WebARENA(レンタルサーバー)Em 10/22, não encontrei um aviso oficial (confirme com o suporte)-WebARENA お知らせ(2026年)

Onde não consegui encontrar ou abrir um aviso oficial, a tabela diz “não foi possível confirmar” ou “não encontrei”. A ausência de informação ali não significa que o provedor não tenha respondido. Consulte diretamente os comunicados e o suporte do seu provedor.

Mitigações enquanto você não pode atualizar imediatamente

O comunicado do PHP lista configurações que reduzem a superfície de ataque até que você possa atualizar. No entanto, o próprio comunicado afirma explicitamente que elas “não tornam você seguro”. As principais são:

  • Para o CVE-2026-109619: defina session.upload_progress.enabled=0 no php.ini, no pool do FPM ou na configuração do servidor e reinicie todos os workers (ini_set() e o .user.ini do FPM não funcionam para isso). No PHP 8.5, defina também fatal_error_backtraces=0.
  • Para o CVE-2026-109618: defina memory_limit=-1 de uma forma que a aplicação não possa sobrescrever e reduza o post_max_size (8M se não houver uploads, 32M se houver). Não use RLIMIT_AS / RLIMIT_DATA como substituto.

O NCSC do Reino Unido recomenda considerar tirar do ar qualquer sistema que não possa ser atualizado ou mitigado imediatamente, e verificar sinais de comprometimento antes de atualizar ou aplicar mitigações.

Fontes (verificadas em 2026-10-22)

Perguntas frequentes

Se o php -v mostra uma versão corrigida, estou protegido contra o php2shell (CVE-2026-109618 / 109619)?

Não necessariamente. O php -v informa apenas a versão do PHP da CLI. O PHP-FPM ou o mod_php do Apache, que atendem as requisições web, podem ser um binário e um pacote separados. Verifique a versão do FPM com php-fpm8.3 -v (php-fpm -v em sistemas da família RHEL). Outra opção é abrir pela web um arquivo temporário que exiba PHP_VERSION e PHP_SAPI e apagá-lo assim que terminar a verificação. Se você não reiniciou o FPM ou o Apache após a atualização, eles podem continuar executando o código antigo.

Se eu uso o php:8.3-fpm do Docker, o php2shell está corrigido?

Em 2026-10-22, o php:8.3-fpm no Docker Hub já foi trocado para o PHP 8.3.36. Porém, sua imagem local continua antiga até você fazer o pull novamente, e os contêineres em execução continuam usando a imagem antiga até serem recriados. Execute docker compose pull e docker compose up -d (ou docker compose build --pull, se você constrói sua própria imagem). Depois, execute php -r 'echo PHP_VERSION;' dentro do contêiner e confirme que a versão é 8.3.36 ou posterior. Tags fixas, como 8.3.30, continuam antigas até que você mesmo atualize o número.

Ubuntu e RHEL ainda mostram PHP 8.3.6 ou 8.0.30. Eles são afetados pelo php2shell?

Não dá para saber só pelo número da versão. Ubuntu e RHEL fazem backport das correções para versões mais antigas, então um pacote pode estar corrigido mesmo com o número antigo. Em 2026-10-22, a correção está no php8.3 8.3.6-0ubuntu0.24.04.13 no Ubuntu 24.04 e no php 8.0.30-8.el9_8.1 no RHEL 9. Compare a versão do pacote instalado (apt-cache policy ou rpm -q) com a versão corrigida no tracker de segurança da sua distro. Você também pode verificar com pro fix CVE-2026-109618 no Ubuntu, ou dnf updateinfo list --cve CVE-2026-109618 em sistemas da família RHEL.