Dev.to Security 🔐 Cybersecurity 👁 0 📖 5 min read

PHP2Shell, Brotli no Node e worms no npm: o que 6 meses de falhas ensinam

Em 21 de outubro de 2026, o PHP publicou uma versão de emergência para duas falhas críticas que permitem execução remota de código sem autenticação. No mesmo dia, o Node.js corrigiu dez vulnerabilidades. Li os avisos ofi

Em 21 de outubro de 2026, o PHP publicou uma versão de emergência para duas falhas críticas que permitem execução remota de código sem autenticação. No mesmo dia, o Node.js corrigiu dez vulnerabilidades. Li os avisos oficiais, as análises de quem encontrou as falhas e as de quem ajudou a mitigar. Aqui vai o que aconteceu, onde as fontes discordam e o que eu checaria hoje no seu ambiente.

PHP2Shell: o mais urgente

As falhas são CVE-2026-109618 e CVE-2026-109619, ambas com CVSS v4.0 de 9,2. Estão no próprio PHP, abaixo do WordPress, do Laravel ou de qualquer plugin. Google Cloud e Wiz listam como vulneráveis todas as versões da 5.4 até a 8.5.11.

Como funciona, em resumo

Segundo o aviso do NCSC (Reino Unido), a primeira falha ocorre quando o PHP fica sem memória enquanto os dados internos da requisição estão só parcialmente inicializados, e a limpeza posterior trata esses dados como válidos. Na segunda, um estado interno continua apontando para memória já liberada, e a próxima requisição atendida pelo mesmo worker pode usá-lo.

Traduzindo: uma requisição que força o estouro do memory_limit deixa lixo para trás, e a requisição seguinte tropeça nele. A Calif mostrou que um upload multipart com campos aninhados consegue esgotar a memória mesmo abaixo do post_max_size.

Linha do tempo

  • 20 de outubro: os detalhes vazaram antes da divulgação planejada para o dia 22, e a watchTowr confirmou que eram reais.
  • 21 de outubro, 14:00 UTC: saem PHP 8.5.12, 8.4.27, 8.3.36 e 8.2.35.

O que fazer

Atualize e reinicie os workers: trocar o pacote em disco não basta se o processo antigo continua na memória. O PHP afirma que nenhuma configuração mitiga tudo.

PHP 8.1 e anteriores não têm release oficial. A watchTowr cita backports mínimos de código-fonte para 7.4, 8.0 e 8.1, além de pacotes de distribuições e de fornecedores de suporte longo. Cuidado: distros costumam aplicar o patch sem mudar o número da versão, então php -v sozinho engana.

# Debian/Ubuntu: o pacote já traz a correção?
apt-get changelog php-fpm | grep -E "CVE-2026-10961[89]"

# reinicie o que de fato atende as requisições (ajuste a versão)
sudo systemctl restart php8.3-fpm

Como paliativo parcial, e só até atualizar, o PHP aponta desligar o upload progress da sessão:

session.upload_progress.enabled = 0

O NCSC vai além: se nem atualizar nem mitigar for possível, considere tirar o sistema do ar e procurar sinais de comprometimento. Lembre também de appliances e painéis de hospedagem que embutem PHP.

Node.js e Next.js

Em 21 de outubro saíram o Node.js 22.23.4, 24.22.1 e 26.12.1, com dez CVEs, quatro delas altas. A pior é a CVE-2026-111497: uma escrita fora dos limites no decodificador Brotli, que pode causar crash, vazamento de memória ou RCE quando a aplicação descomprime com node:zlib dados controlados por um atacante.

Duas outras altas afetam a verificação de hostname em TLS com IPs escritos de forma não canônica. Exemplo do próprio aviso: 0127.0.0.1 é lido como octal pelo verificador, mas pode ser lido como decimal pelo sistema operacional. A quarta alta trunca nomes DNS com byte NUL, o que pode furar listas de domínios permitidos.

O Node 20 não recebeu correção; segundo a Vendure, seu fim de vida foi em 30 de abril de 2026. Antes disso, houve releases com falhas altas em 18 de junho e em 29 de julho (adiado por problemas de infraestrutura).

No Next.js, 25 de agosto trouxe duas falhas críticas de RCE (corrigidas em 15.5.24 e 16.3.3). Em 14 de outubro vieram outras: um RCE em funções use cache que retornam typed arrays e outro na otimização de imagens (corrigidas em 16.4.1 e 15.5.28).

npm: worms e contas sequestradas

O caso de maior escala foi o ChainDrop, um worm da família Shai-Hulud. Segundo a Microsoft, ele executa em hook de preinstall, rouba credenciais e republica pacotes usando o acesso roubado. Antes dele houve o Mini Shai-Hulud (29 de abril), a campanha TeamPCP (11 de maio) e o comprometimento de mais de 140 pacotes Mastra em 17 de junho, atribuído pela Microsoft à Sapphire Sleet, grupo norte-coreano.

Defesas práticas, a partir do guia da ArmorCode: lockfile commitado, npm ci, intervalo mínimo antes de adotar versões recém-publicadas e atenção a dependências novas com scripts de instalação.

npm ci --ignore-scripts

Composer

Em 14 de abril foram corrigidas duas injeções de comando no driver Perforce do Composer (CVE-2026-40261, CVSS 8,8, e CVE-2026-40176, 7,8). Uma terceira, de 14 de julho (CVE-2026-59946), foi corrigida nas versões 2.2.29 e 2.10.2. Esses detalhes vêm de fontes secundárias; confirme no aviso do projeto antes de agir.

Onde as fontes discordam

  • Quem achou e quando: a Calif cita Calif, OpenAI e Wiz como descobridores; cada uma publica datas próprias (Calif reporta em 11 de agosto, Wiz em 24 de agosto).
  • O papel da IA: a Wiz diz que modelos de ponta foram decisivos. A Calif diz que usou modelos acessíveis a todos, sem estrutura especial, e que conhecer o histórico do alvo pesou.
  • Exploração: a watchTowr diz ter visto ataques reais desde 21 de outubro. A SOCRadar fala em relatos de alguns fornecedores ainda sob investigação. Até 22 de outubro, nenhuma CVE estava no catálogo KEV da CISA, segundo a watchTowr.
  • Tamanho do ChainDrop: a Microsoft cita mais de 400 pacotes (4 de agosto); o CSA de Singapura, mais de 1.300 versões (6 de agosto). Podem ser momentos diferentes da propagação, mas não consegui confirmar.
  • Alcance: "70% dos sites" é número da Wiz; não verifiquei a origem.

Conclusão

  • Faça inventário de onde o PHP roda, inclusive em appliances, atualize e reinicie os workers.
  • No Node, suba para 22.23.4, 24.22.1 ou 26.12.1 e saia do Node 20.
  • Trate npm install como execução de código de terceiros.
  • Em incidentes recentes, espere números e atribuições mudarem; releia as fontes primárias.

Referências

📰 Read the original article on Dev.to Security

Originally published by Dev.to Security. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.