Php corrige falha crítica no brotli cinco dias após atualização contra ataques php2shell

4 минут чтения

PHP enfrenta segunda falha crítica em cinco dias

O projeto PHP publicou novos pacotes de segurança para Windows após a identificação de uma vulnerabilidade crítica na biblioteca Brotli, usada para descompactar determinados conteúdos. Registrada como CVE-2026-111497, a falha pode provocar corrupção de memória e, em condições específicas, permitir a execução de código malicioso.

O problema recebeu nota 9,2 de 10 no CVSS 4.0, classificação atribuída pelo Google. A Red Hat avaliou a vulnerabilidade em 8,1 no CVSS 3.1 e a considerou importante. A diferença entre as pontuações reflete critérios distintos de avaliação, mas ambas indicam um risco que merece atenção dos responsáveis por sistemas PHP.

A atualização chega apenas cinco dias depois de outra rodada de correções. Os pacotes lançados em 21 de outubro de 2026 haviam solucionado duas falhas de execução remota de código conhecidas como PHP2Shell. As compilações mais recentes mantêm aquelas correções e incluem o Brotli 1.2.1, versão que resolve o problema agora divulgado.

Foram atualizadas as versões PHP 8.5, 8.4, 8.3 e 8.2 para Windows. Os números completos dos novos pacotes são, respectivamente, 8.5.12-1, 8.4.27-1, 8.3.36-1 e 8.2.35-1. As compilações anteriores vinham com o Brotli 1.2.0, que está entre as versões afetadas.

A vulnerabilidade pode ser acionada durante o processamento de respostas HTTP comprimidas. O cenário envolve a extensão cURL do PHP e a descompressão automática ativada: um atacante precisaria enviar uma resposta especialmente preparada a uma aplicação que se conectasse a um servidor sob seu controle.

No cURL, a opção `CURLOPT_ENCODING` habilita esse comportamento. Quando recebe uma string vazia, ela permite a aceitação dos formatos de compressão compatíveis com o cURL, incluindo Brotli. O recurso não fica necessariamente ativo por padrão no próprio cURL, mas aplicações e bibliotecas podem habilitá-lo ao fazer requisições.

Um caso relevante é o Guzzle, biblioteca bastante usada para comunicação HTTP em projetos PHP. Nas versões 7.16.1 e 8.3.1, quando o transporte utiliza cURL, a configuração padrão pode ativar a descompressão automática. Assim, sistemas que mantinham essas configurações nas compilações antigas do PHP para Windows poderiam reunir as condições para exposição.

Essa possibilidade foi apontada com base na análise do código das bibliotecas e da documentação do PHP, mas não foi confirmada por testes em máquinas Windows. Pesquisadores da Imperva conseguiram executar código ao explorar a falha em uma compilação oficial do Node.js, embora tenham precisado de várias tentativas. O resultado indica o potencial do problema, mas não comprova que o mesmo método funcione nos pacotes PHP para Windows.

A falha foi descoberta por pesquisadores da OpenAI. Em 21 de outubro, o Google disponibilizou correções para a biblioteca Brotli nas versões 1.2.1, 1.1.1 e 1.0.10. Projetos que mantêm suas próprias cópias do componente, como Node.js e Bun, também publicaram atualizações de segurança.

Até o momento descrito no comunicado do PHP, não havia indicação de ataques em andamento. Em 23 de outubro, a agência de segurança cibernética dos Estados Unidos, a CISA, também não registrava exploração ativa nem havia incluído a CVE-2026-111497 em seu catálogo de vulnerabilidades conhecidas exploradas. Essa ausência de registros, porém, não elimina a necessidade de atualizar os sistemas vulneráveis.

A recomendação para quem usa PHP no Windows é instalar uma das novas compilações. Como o código-fonte e o número principal da versão não mudaram, o comando `php -v` não permite saber, por si só, se o pacote contém a correção. É necessário conferir o sufixo `-1` no nome do arquivo – por exemplo, `php-8.5.12-1-nts-Win32-vs17-x64.zip` – ou comparar o hash SHA-256 com o valor informado na página de downloads do projeto.

Em ambientes nos quais a atualização não possa ser aplicada imediatamente, o comunicado do PHP não apresenta uma solução alternativa própria. A OpenAI recomenda desativar temporariamente a descompressão automática de Brotli nos clientes HTTP. Apenas retirar `br` do cabeçalho `Accept-Encoding` não é suficiente: um servidor ainda pode enviar uma resposta comprimida nesse formato.

Em aplicações que usam cURL diretamente, a medida temporária consiste em não definir `CURLOPT_ENCODING`, evitando que a biblioteca descomprima automaticamente as respostas. No Guzzle, é possível configurar `decode_content` como `false`. Essa alteração desativa a descompressão automática de todos os formatos, inclusive gzip, e pode exigir ajustes no código para que a aplicação processe as respostas até a instalação do pacote corrigido.

Após atualizar, equipes técnicas devem confirmar qual arquivo foi instalado e revisar as configurações dos clientes HTTP. Também é recomendável identificar aplicações que usam Guzzle ou cURL e verificar se a descompressão automática está habilitada. Essa checagem ajuda a priorizar os sistemas expostos e evita que um servidor permaneça vulnerável por depender de um pacote antigo.

A atualização é especialmente importante para serviços que realizam requisições a destinos externos ou a sistemas controlados por terceiros. Nesses casos, uma resposta HTTP recebida não deve ser considerada confiável apenas por vir de uma conexão aparentemente legítima: configurações de compressão e tratamento de conteúdo também fazem parte da superfície de ataque.