Este tópico descreve como as vulnerabilidades do PHP CVE-2026-109618 e CVE-2026-109619 (PHP2Shell) afetam o Alibaba Cloud Linux e apresenta medidas de mitigação temporárias e recomendações de correção.
Visão geral da vulnerabilidade
Em 21 de outubro de 2026, o projeto PHP divulgou duas vulnerabilidades críticas: CVE-2026-109618 e CVE-2026-109619. A primeira envolve estado de requisição inválido durante o tratamento de falta de memória (OOM) e a segunda refere-se a estado global retido entre requisições. Em ambientes PHP afetados que atendem requisições web, um atacante pode acionar essas vulnerabilidades por meio de requisições não autenticadas para executar código arbitrário com os privilégios do worker web.
|
CVE ID |
Mecanismo |
Gravidade |
|
CVE-2026-109618 |
Corrupção do estado de memória durante saída antecipada causada por OOM e subsequente limpeza de requisição. |
Crítica |
|
CVE-2026-109619 |
Estado global obsoleto após a liberação da memória da requisição, resultando em use-after-free (UAF). |
Crítica |
Detalhes das vulnerabilidades
CVE-2026-109618: Corrupção do estado de memória durante o tratamento de OOM
O PHP utiliza longjmp() para sair do contexto de execução quando ocorre OOM e abortar a requisição. Parte da memória da requisição fica acessível a outras operações antes que a inicialização seja concluída. Se uma alocação falhar nesse ponto, a saída antecipada pode deixar a memória da requisição em estado inválido. A limpeza subsequente da requisição pode ler ou ramificar com base nesse estado, causando corrupção de memória e execução remota de código. A alocação que falhou não precisa estar relacionada à memória inválida. Portanto, restringir um único método de upload ou endpoint da aplicação não elimina o risco.
O Apache mod_php executa a limpeza da requisição mesmo quando a inicialização da requisição falha. Dessa forma, a análise automática do corpo da requisição pode acionar a vulnerabilidade antes que o código da aplicação seja executado. O PHP-FPM encerra o processo filho quando a inicialização da requisição falha, o que bloqueia esse caminho específico da fase de inicialização. No entanto, os caminhos de OOM após uma inicialização bem-sucedida ainda podem ser afetados. O PHP-FPM não deve ser considerado não afetado com base apenas nesse comportamento.
CVE-2026-109619: Estado global retido entre requisições
O estado global de erro, sessão, objeto ou extensão em um worker PHP pode apontar para memória pertencente a uma requisição. Alguns caminhos de tratamento de erro, saída ou limpeza não redefinem esse estado antes da liberação da memória da requisição, ou repovoam o estado relacionado à requisição após a redefinição. Quando o mesmo worker processa uma requisição posterior, as operações de entrada, configuração, sessão ou tratamento de erro podem acessar o estado obsoleto antes que a inicialização normal seja concluída, causando UAF e potencialmente execução remota de código.
O progresso de upload de sessão é apenas um dos caminhos de gatilho confirmados, não abrange todo o escopo da vulnerabilidade. Desativar a exibição de erros, alterar error_reporting ou usar @ para suprimir diagnósticos não impede o acesso ao estado obsoleto antes da saída de diagnóstico.
Produtos e versões afetados
A equipe de segurança do Alibaba Cloud Linux confirmou que os seguintes produtos e versões são afetados pelas vulnerabilidades CVE-2026-109618 e CVE-2026-109619:
Apenas ambientes com PHP instalado precisam ser verificados. Ambientes sem PHP não requerem correção para essas vulnerabilidades do PHP. Verifique também o PHP implantado em contêineres, de repositórios de terceiros ou compilado a partir do código-fonte. Não avalie o ambiente apenas com base nos pacotes instalados no host.
|
Produto |
Versão do PHP |
Status |
|
Alibaba Cloud Linux 2 |
5.4.16 e anteriores |
Afetado |
|
Alibaba Cloud Linux 3 |
7.4.33-6.0.1 e anteriores |
Afetado |
|
Alibaba Cloud Linux 4 |
8.3.35 e anteriores |
Afetado |
|
Alibaba Cloud Linux 4 (Deb Edition) |
php8.3: < 8.3.6-0ubuntu0.24.04.13 |
Afetado |
A atualização dos pacotes oficiais do PHP no host não corrige automaticamente o PHP instalado a partir de repositórios de terceiros, implantado em imagens de contêiner ou compilado a partir do código-fonte. Confirme a versão corrigida com o fornecedor relevante e atualize o runtime do PHP que efetivamente atende as requisições web.
Medidas de mitigação temporárias
Nenhuma mitigação genérica de configuração elimina completamente o risco dessas duas vulnerabilidades. É necessário instalar uma versão que contenha as correções completas. A configuração a seguir apenas reduz o risco de caminhos de gatilho específicos. Ela não substitui uma atualização e não torna uma instalação segura.
Se não for possível atualizar imediatamente, avalie o impacto no negócio e desative o rastreamento de progresso de upload de sessão no php.ini, no pool do PHP-FPM ou na configuração do servidor utilizada pelo serviço web efetivo:
session.upload_progress.enabled = 0
A configuração deve entrar em vigor antes da análise da requisição. Não confie em ini_set() no código da aplicação nem nas configurações .user.ini do PHP-FPM. Reinicie todos os workers PHP relacionados após a alteração e verifique a configuração efetiva do serviço web real. Esta medida bloqueia apenas alguns caminhos de sessão confirmados para a CVE-2026-109619. Ela não cobre outros problemas de estado entre requisições nem a CVE-2026-109618.
Desativar esse recurso pode afetar a exibição do progresso de upload, e a reinicialização dos serviços pode interromper requisições ativas. Valide a alteração em um ambiente de teste e agende uma janela de manutenção. Outros limites de memória ou de requisição também não são correções completas. Alterar limites de memória sem avaliação pode levar à exaustão de recursos ou interrupção do serviço. Para conhecer todas as limitações das mitigações temporárias, consulte o anúncio de segurança do PHP vinculado ao final deste tópico.
Correção
Com base no seu método de implantação real, instale uma versão do PHP que contenha as correções para ambas as vulnerabilidades ou uma atualização de segurança posterior. As informações de correção relevantes estão listadas abaixo:
Sistema operacional | Versão corrigida | Detalhes da correção |
Alibaba Cloud Linux 2 | Este produto atingiu o fim de vida (EOL). Migre para a versão mais recente o mais breve possível. | Este produto atingiu o fim de vida (EOL). Migre para a versão mais recente o mais breve possível. |
Alibaba Cloud Linux 3 | php ≥ php-7.4.33-8.0.1.al8 | |
Alibaba Cloud Linux 4 | php ≥ php-8.3.36-1.alnx4 | |
Alibaba Cloud Linux 4 (Deb Edition) | php8.3: ≥ 8.3.6-0ubuntu0.24.04.13 | Execute os seguintes comandos para atualizar os pacotes php8.3 instalados: Após a atualização, execute o seguinte comando para verificar se a versão do pacote é 8.3.6-0ubuntu0.24.04.13 ou posterior: |
Durante uma janela de manutenção, reinicie todos os workers PHP que atendem requisições para que carreguem o programa atualizado. Atualizações e reinicializações podem interromper requisições. Em seguida, verifique o acesso às aplicações, os logs de erro e a versão do PHP utilizada pelo serviço web efetivo.
Você pode executar o seguinte comando somente leitura para verificar a versão do PHP padrão da linha de comando:
php -v
O PHP da linha de comando pode ser diferente do PHP-FPM, do Apache mod_php ou do PHP dentro de contêineres. Um comando indisponível não comprova que o PHP está ausente de todos os serviços web. Verifique o binário ou módulo carregado pelo serviço efetivo, a versão completa do pacote e o aviso de segurança do fornecedor. Não conclua que a correção está completa com base apenas na saída de php -v.