SISTEMAS MONITORADOS · CONHECIMENTO COMPARTILHADO DEFESA COMEÇA COM INFORMAÇÃO
K KerberosTechCibersegurança sem mistério

Artigo

Do laboratório
André Bueno

PHP2Shell: Entenda as Falhas Críticas de RCE no PHP (CVE-2026-109618 e CVE-2026-109619)

 
Foram divulgadas duas vulnerabilidades críticas no núcleo da linguagem PHP, apelidadas coletivamente de PHP2Shell. Rastreadas como CVE-2026-109618 e CVE-2026-109619, ambas possuem pontuação CVSS v4.0 de 9.2 (Crítica) e permitem a execução remota de código (RCE) sem necessidade de autenticação e antes mesmo do processamento do código da aplicação

Como Funcionam as Vulnerabilidades

  • CVE-2026-109618 (Corrupção por Falta de Memória - OOM): Ocorre quando um erro de falta de memória interrompe a inicialização da requisição. O procedimento de limpeza tenta processar dados não inicializados, resultando em condição de Use-After-Free e corrupção de memória.
  • CVE-2026-109619 (Estado Global Obsoleto): Referências a dados de uma requisição anterior permanecem gravadas na memória do processo do worker após a liberação do heap. Requisições posteriores tratadas pelo mesmo worker acessam essa memória liberada (Use-After-Free), possibilitando o RCE.

Sistemas Afetados

A falha afeta todas as instalações de PHP que servem requisições web, incluindo ambientes com PHP-FPM, Apache mod_php, php-cgi, FrankenPHP e LiteSpeed. O risco é considerado mais elevado em arquiteturas mod_php, pois a exploração pode ser bem-sucedida antes de qualquer código da aplicação ser compilado.

Versões Corrigidas

O time de segurança do PHP disponibilizou atualizações oficiais para todas as ramificações suportadas:

  • PHP 8.2: Atualizar para 8.2.35
  • PHP 8.3: Atualizar para 8.3.36
  • PHP 8.4: Atualizar para 8.4.27
  • PHP 8.5: Atualizar para 8.5.12

(Nota: Versões 8.1 e inferiores já alcançaram o fim de vida (EOL) e exigem pacotes de correção de distribuidores Linux ou a migração para uma versão suportada.


Medidas de Mitigação

  1. Atualização do Runtime: A atualização para as versões corrigidas é a única solução definitiva
  2. Ações Temporárias (caso o patch imediato não seja possível):
    • Desativar o recurso de progresso de upload de sessão definindo session.upload_progress.enabled = 0 nas configurações do servidor.
    • No PHP 8.5, desativar os rastreamentos de erros fatais com fatal_error_backtraces = 0.
    • Definir memory_limit = -1 administrativamente para remover o limite de memória percorrido pelo exploit.
    • Bloquear requisições multipart no servidor web ou WAF em aplicações que não realizam upload de arquivos.