Vitor Bellini
Todos os posts

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 alias e rewrite. 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 map com 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
  1. Atualizar o PHP e reiniciar o php-fpm.
  2. Atualizar o nginx e recarregar.
  3. Atualizar o Node, se ele roda no servidor ou no CI.
  4. apt update && apt upgrade para pegar o resto do sistema.
  5. Novo deploy com composer install e npm ci, a partir dos lockfiles já corrigidos.

No projeto:

  1. composer audit limpo e Laravel no 13.29+ (ou 12.68+).
  2. npm audit revisado.
  3. 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.

Fontes

0 curtidas