Semana de patch: PHP, Node, nginx e Laravel
5 min de leitura #laravel #seguranca #php #nginx #node
Em uma semana saiu correção crítica para quase tudo que roda um projeto Laravel: PHP, Node, nginx e o próprio framework. Juntei aqui o que mudou, até qual versão atualizar e o que dá para fazer enquanto o patch não chega.
PHP: php2shell
São duas falhas, a CVE-2026-109618 e a CVE-2026-109619, apelidadas de "php2shell". As duas permitem execução remota de código sem autenticação, com o usuário do processo web. Nota 9.2 no CVSS v4.0.
O que deixa isso mais urgente: a Amazon viu tentativa de exploração em 17 de outubro, quatro dias antes da divulgação. Detalhes vazaram antes do patch.
Versões corrigidas (21/10):
- 8.5.12
- 8.4.27
- 8.3.36
- 8.2.35
O PHP 8.1 para baixo é fim de vida e não recebe release oficial.
Se não der para atualizar agora, desligue o upload progress no php.ini:
session.upload_progress.enabled = 0
Isso bloqueia os caminhos de ataque conhecidos da segunda falha. Não cobre toda variante, então é paliativo, não correção.
Se você usa Forge: a atualização automática de segurança do Forge não atualiza o PHP. Tem que fazer na mão. No Laravel Cloud, as aplicações já foram corrigidas no lugar.
Depois de atualizar, reinicie o php-fpm. Sem isso, os workers continuam rodando o binário antigo.
nginx: três críticas e mais algumas
A F5 soltou correção fora de ciclo em 14 de outubro. As três críticas, todas 9.2:
- CVE-2026-15176: heap overflow no tratamento de
aliaserewrite. Derruba o worker e, em alguns casos, executa código. - CVE-2026-97205: use-after-free envolvendo AIO e Server Side Includes.
- CVE-2026-93479: heap overflow na diretiva
mapcom captura de regex.
Vieram junto uma falha de sessão TLS forjada que pula a verificação de certificado de cliente (CVE-2026-97629) e um request smuggling no HTTP/3 (CVE-2026-95101).
Versões corrigidas: nginx 1.30.6 (stable) e 1.31.7 (mainline). Se você usa njs, vá para a 1.0.2.
Enquanto não atualiza: evite alias nos location afetados e não use $request_filename.
Node.js: Brotli e TLS
Também em 21/10, o Node corrigiu 10 CVEs nas linhas 26, 24 e 22. A pior é a CVE-2026-111497, uma escrita fora dos limites no decoder Brotli que pode levar a execução de código. Pega em cheio quem usa fetch() ou Express 5.
As outras altas são duas formas de pular a verificação de hostname no TLS (CVE-2026-105483 e CVE-2026-106069) e um truncamento de nome no dns.resolve (CVE-2026-105482).
Versões corrigidas:
- 26.12.1
- 24.22.1
- 22.23.4
O Node 20 e o 25 são fim de vida e ficaram de fora.
"Mas eu só uso Node para buildar o front." Vale atualizar mesmo assim: a máquina de build e o CI baixam pacote da internet o tempo todo. A minha estava na 22.17 e eu nem lembrava.
Laravel
Duas que valem conferir no composer.lock:
- Bypass no token guard (GHSA-f9x3-7vq9-cph6, 9.2). Em MySQL e MariaDB, dava para autenticar como outro usuário sem saber o token. Corrigido no 13.29.0 e no 12.68.0. Sanctum e Passport usam guards próprios e não estão na lista.
- Destruição de dados no JSON:API (GHSA-5wcm-3v2w-8362, 6.5), nos resources de JSON:API que entraram no 12.45. Corrigido no 13.27.0 e no 12.68.0.
Para conferir:
php artisan --version
composer audit
As dependências do front
Aproveitei e rodei o npm audit no blog. Deu 21 vulnerabilidades, 5 críticas: tinypool e oxfmt (via vite-plus), concurrently, shell-quote, além de vite, mermaid e lodash-es como altas.
Quase tudo isso é dependência de desenvolvimento e build, então o risco fica na máquina de dev e no CI, não no site no ar. Mas é justamente onde mora a sua chave SSH e o token de deploy.
npm audit
npm audit fix
Leia o que o npm audit fix --force vai fazer antes de rodar. Ele sobe major sem perguntar.
OpenSSL
Não saiu falha nova nesses dias, mas tem prazo vencendo: o OpenSSL 3.4 sai de suporte hoje, 22/10, e o 3.0 já saiu em setembro. Se o seu servidor ainda está num deles, entra na lista.
openssl version
O checklist
No servidor:
php -v && nginx -v && node -v && openssl version
- Atualizar o PHP e reiniciar o
php-fpm. - Atualizar o nginx e recarregar.
- Atualizar o Node, se ele roda no servidor ou no CI.
apt update && apt upgradepara pegar o resto do sistema.- Novo deploy com
composer installenpm ci, a partir dos lockfiles já corrigidos.
No projeto:
composer auditlimpo e Laravel no 13.29+ (ou 12.68+).npm auditrevisado.- Node local atualizado.
E se não der para fazer tudo hoje, faça pelo menos o PHP. É a única dessa lista com exploração confirmada antes do patch.