# CVE-2026-115560: aviso sobre o session upload progress

> CVE-2026-115560: quando o terceiro aviso do PHP de 23/10/2026 afeta o seu servidor, como verificar a configuração e desativar o upload progress.

Fonte: https://phpsos.de/pt/php2shell/cve-2026-115560/  
Atualizado em: 25/10/2026  
Prestador: PHP SOS, Assistência de emergência PHP e segurança de servidores. Ajuda imediata por WhatsApp: https://wa.me/491736494914?text=Ol%C3%A1%2C%20PHP%20SOS%2C%20precisamos%20de%20ajuda%20com%20o%20nosso%20servidor%20PHP.%20Empresa%3A%20%E2%80%A6%20Site%3A%20%E2%80%A6

**Em resumo:** a CVE-2026-115560 é um aviso que o php.net publicou a 23 de outubro de 2026. A execução remota de código só é possível, segundo ele, numa configuração de sessão invulgar. Até à próxima versão regular de correção de erros, a solução é: definir `session.upload_progress.enabled=0` no servidor e reiniciar todos os workers.

## O que é a CVE-2026-115560?

Dois dias depois dos patches para as vulnerabilidades PHP2Shell CVE-2026-109618 e CVE-2026-109619, o projeto PHP publicou mais um aviso. A CVE-2026-115560 diz respeito ao tratamento de sessões do PHP em ligação com a função session upload progress, que guarda na sessão o progresso dos uploads de ficheiros em curso.

Segundo o php.net, é possível a execução remota de código malicioso, mas apenas numa configuração invulgar. O aviso completo (advisory), com todos os pormenores, deverá seguir-se com a próxima versão regular de correção de erros. Até lá, o conhecimento disponível é deliberadamente escasso.

## O que faz o session upload progress?

O session upload progress é uma função de conveniência do PHP. Quando um visitante envia um ficheiro maior, o PHP escreve na sessão, durante o upload, indicações contínuas sobre o progresso: quantos dados já chegaram e que ficheiro está a ser transferido. Uma aplicação pode consultar essas indicações em paralelo e construir com elas uma barra de progresso.

Na prática, poucas aplicações a usam, porque os formulários de upload modernos medem o progresso normalmente diretamente no navegador. No PHP, porém, a função está ativada por predefinição. Por isso aparece tanto na CVE-2026-115560 como nas medidas provisórias contra o PHP2Shell: o que não é necessário deve estar desligado.

## Quando é que um servidor está afetado pela CVE-2026-115560?

Segundo o aviso do php.net, têm de se verificar em conjunto três condições:

1. Na configuração, o `session.serialize_handler` tem o valor `php_binary` ou `php_serialize`.
2. A aplicação altera este valor em tempo de execução, com `ini_set()`, para `php`, antes de chamar `session_start()`.
3. O session upload progress está ativo.

O valor predefinido do `session.serialize_handler` é `php`. Uma alteração na configuração e uma reposição no código é invulgar, mas ocorre em desenvolvimentos próprios antigos ou em bibliotecas com tratamento próprio de sessões. Se isso se aplica no seu caso, pode ser verificado.

## Como verificar a sua configuração

Primeiro, os valores efetivos. A CLI pode ler um php.ini diferente do PHP-FPM ou do mod_php; verifique por isso também a configuração do servidor web ou do pool FPM.

```bash
php -i | grep -E "session.serialize_handler|session.upload_progress.enabled"
grep -rn "serialize_handler\|upload_progress" /etc/php/ 2>/dev/null   # o caminho varia conforme a distribuição
```

Depois, o código da aplicação. A pesquisa seguinte é apenas de leitura e mostra os locais onde o handler é definido em tempo de execução:

```bash
grep -rn "session.serialize_handler" /var/www/ --include="*.php"
```

Se a pesquisa não encontrar nada e o handler estiver em `php` na configuração, a combinação descrita é improvável. Mesmo assim, deve desativar o session upload progress, pois o php.net indica a mesma definição também como medida provisória contra o PHP2Shell.

## Solução: session.upload_progress.enabled=0

Defina o valor no php.ini, no pool FPM ou na configuração do servidor. Segundo o php.net, expressamente não através de `ini_set()` ou `.user.ini`, pois aí atua tarde demais ou pode ser sobreposto pela aplicação.

```ini
; php.ini (para todos os pools e SAPIs que leem este ficheiro)
session.upload_progress.enabled = 0

; ou no pool FPM
php_admin_flag[session.upload_progress.enabled] = off
```

```apache
# Apache com mod_php, no VirtualHost ou na configuração do servidor
php_admin_flag session.upload_progress.enabled off
```

Depois, reinicie todos os workers do PHP, por exemplo `systemctl restart php8.3-fpm` ou o Apache, no caso do mod_php. Os nomes de pacotes e de serviços variam conforme a distribuição. Sem reinício, a definição antiga continua a vigorar. Mais informação em [Reiniciar o PHP-FPM e todos os workers](https://phpsos.de/pt/php2shell/php-fpm-neustart/).

> **Dica:**
> Depois do reinício, verifique se a definição realmente produz efeito: no contexto web, e não apenas na linha de comandos. Uma página phpinfo criada por pouco tempo e protegida contra acesso mostra o valor efetivo; apague-a logo a seguir.

## Enquadramento em relação ao PHP2Shell

A CVE-2026-115560 é claramente mais restrita do que as duas vulnerabilidades do PHP2Shell, que atuam nos modos de operação habituais sem configuração especial. Quem tem de priorizar agora deve primeiro instalar a atualização do PHP2Shell e depois definir `session.upload_progress.enabled=0`. As duas coisas são exequíveis numa só janela de manutenção.

Para a administração e para quem não é técnico: a CVE-2026-115560 não é motivo de inquietação, mas é um ponto da lista. A definição é rapidamente aplicada, quase não tem efeitos percetíveis em nenhuma aplicação e cobre, ao mesmo tempo, uma das medidas provisórias contra o PHP2Shell. As restantes medidas provisórias do php.net constam de [Medidas imediatas quando ainda não pode aplicar o patch](https://phpsos.de/pt/php2shell/sofortmassnahmen-ohne-patch/), as indicações gerais sobre a configuração de sessões em [Proteger as sessões em PHP](https://phpsos.de/pt/ratgeber/session-sicherheit-php/).

O que ainda não sabemos: que versões do PHP estão exatamente afetadas e que versão traz a correção. Atualizamos esta página assim que o aviso (advisory) for publicado.

## Como ajuda concretamente a PHP SOS?

No âmbito do [hardening de servidor](https://phpsos.de/pt/leistungen/server-haertung/), aplicamos a solução de forma duradoura e verificável:

- **Ler a configuração:** valores de sessão efetivos por SAPI, pool e host virtual.
- **Pesquisar o código:** locais onde o handler ou as opções de sessão são alterados em tempo de execução.
- **Desativar no sítio certo:** no php.ini, no pool ou na configuração do servidor, sem poder ser sobreposto pela aplicação, com reinício a seguir.
- **Acompanhar:** quando a versão de correção de erros sair, instalamo-la e documentamos o estado.


## Perguntas frequentes

**A CVE-2026-115560 faz parte do PHP2Shell?**  
O aviso surgiu dois dias depois dos patches do PHP2Shell e diz também respeito ao próprio PHP. Mas é uma vulnerabilidade distinta, com número CVE próprio, e só atua numa configuração específica e invulgar. As atualizações do PHP2Shell de 21 de outubro não a corrigem, segundo o estado atual.

**Já existe uma atualização contra a CVE-2026-115560?**  
Segundo o estado de 25/10/2026, não. O php.net anuncia que o aviso completo (advisory) se seguirá com a próxima versão regular de correção de erros. Até lá, session.upload_progress.enabled=0 é a solução recomendada.

**O que deixa de funcionar se eu desativar o session upload progress?**  
A função comunica à aplicação o progresso dos uploads de ficheiros em curso. Só as aplicações que implementam uma barra de progresso deste tipo através desta função do PHP perdem a indicação. O upload em si continua a funcionar.

## Fontes

- [php.net: avisos de segurança](https://www.php.net/)
- [PHP 8 ChangeLog](https://www.php.net/ChangeLog-8.php)
- [OWASP Cheat Sheets](https://cheatsheetseries.owasp.org/)
