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 installcomo execução de código de terceiros. - Em incidentes recentes, espere números e atribuições mudarem; releia as fontes primárias.
Referências
- PHP 8.5.12 release
- PHP2Shell FAQ, watchTowr
- PHP2Shell, Calif Research
- PHP2Shell, Wiz
- Responding to core PHP vulnerabilities, Google Cloud
- Critical security issue affecting PHP, NCSC
- Node.js, October 21, 2026 Security Releases
- Node.js, June 18, 2026 Security Releases
- Node.js, July 29, 2026 Security Releases
- Vendure: October 2026 Node.js security releases
- Next.js security update, October 14, 2026
- Two critical Next.js vulnerabilities, Netlify
- ChainDrop supply chain compromise, Microsoft
- Shai-Hulud worm advisory, CSA Singapore
- Mastra npm compromise, Microsoft
- The npm Threat Landscape, Unit 42
- Defending Against NPM Supply Chain Attacks, ArmorCode
- CVE-2026-40261, Action1
- CVE-2026-59946, Vulert
Originally published by Dev.to Security. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.