FlawOpen

flawopen.com/Teardowns/cve-2025-55182-react-server-components-rce

● CVE-2025-55182 · CVSS 10.0[1] · Crítica
Pesquisa · FlawOpen

CVE-2025-55182: React2Shell no RSC

CVE-2025-55182 é uma falha de execução remota sem autenticação na decodificação de payloads React Server Components (RSC). React confirmou a falha; o Google Threat Intelligence documentou campanhas com downloaders, backdoors e mineradores.[1], [4], [5]

💡 Explicação em Linguagem Simples (ELI5)

Imagine uma recepcionista consultando uma lista de serviços autorizados. Uma busca incorreta trata um nome herdado do modelo da lista como se o responsável o tivesse cadastrado. O patch do React verifica se a exportação solicitada pertence ao próprio módulo; o aviso público não revela a sequência completa do exploit. Atualize os pacotes afetados.[1]

Conceitos Centrais e Termos

React Server Components (RSC)
React Server Components: protocolo e pacotes React para renderização no servidor e troca de dados Flight.[1]

Mapeamentos de frameworks

Análise de Causa Raiz

React confirma que a RCE vinha de uma falha ao decodificar payloads enviados a endpoints React Server Functions; apenas o suporte a RSC podia expor o app. O aviso inicial omitiu detalhes do exploit. O patch upstream público adiciona uma verificação de propriedade própria em requireModule() e reforça erros de respostas multipart. O trecho mostra uma correção concreta, não reproduz o decoder inteiro nem afirma que um único guard explica toda a cadeia.[1], [2]

Versões afetadas e escopo de implantação do React2Shell

Componente ou implantaçãoAvaliação do escopoAção de correção
react-server-dom-webpack, react-server-dom-parcel ou react-server-dom-turbopack nas versões 19.0, 19.1.0, 19.1.1 ou 19.2.0.O suporte RSC no servidor pode expor o aplicativo mesmo sem um endpoint Server Function declarado; o limite do servidor precisa estar acessível.Atualize a linha do pacote para 19.0.1, 19.1.2 ou 19.2.1 ou posterior, conforme aplicável. Recompile e reimplante o artefato do servidor.
Next.js App Router em versões afetadas 15.x/16.x ou em 14.3.0-canary.77 e canaries posteriores.Integrações afetadas do framework incluem os pacotes RSC vulneráveis. Não presuma que está seguro porque o aplicativo não declara seu próprio endpoint Server Function.Use a versão corrigida correspondente: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 ou 16.0.7 ou posterior. São as versões mínimas registradas no aviso citado; confira a linha atual do fornecedor antes da implantação.
Aplicativo React somente no cliente, sem suporte RSC no servidor.Fora do escopo documentado da CVE porque não possui o limite decodificador no servidor.Essa configuração não precisa do patch de servidor do React2Shell. Reavalie se RSC ou componentes de servidor forem introduzidos.
Implantação declarada como corrigida.A versão no manifesto não comprova que todas as regiões, serviços de preview, workers ou contêineres em execução usam o artefato corrigido.Verifique digests de imagens e versões resolvidas em produção, preview e workers; investigue qualquer período anterior de exposição.
Orientação por linha do Next.js na atualização do React de 2026-01-26A orientação posterior do React inclui versões de segurança mais novas; elas não são as versões mínimas que corrigiram inicialmente a CVE-2025-66478. Avisos RSC relacionados e linhas suportadas podem alterar o alvo da atualização.Para os avisos RSC relacionados CVE-2025-55183, CVE-2025-55184, CVE-2025-67779 e CVE-2026-23864, o React indicou as versões corrigidas 19.0.4, 19.1.5 e 19.2.4. A orientação do Next.js, datada de 2026-01-26, foi: 14.2.35 para 13.3.x–14.x estável; 15.0.8 para 15.0.x; 15.1.12 para 15.1.x; 15.2.9 para 15.2.x; 15.3.9 para 15.3.x; 15.4.11 para 15.4.x; 15.5.10 para 15.5.x; 16.0.11 para 16.0.x; e 16.1.5 para 16.1.x. Esta é uma orientação posterior para problemas relacionados, não as versões mínimas do Next.js que corrigiram a CVE-2025-66478. Antes de implantar, consulte o aviso mais recente do fornecedor e confirme a linha com suporte.
CVE-2026-23869 — negação de serviço em RSC (2026-04-08).O React informa que requisições HTTP especialmente criadas a endpoints de Server Function podem consumir CPU excessivamente por até um minuto antes de gerar um erro capturável. As linhas afetadas dos pacotes react-server-dom-* vão até 19.0.4, 19.1.5 e 19.2.4.O React lista 19.0.5, 19.1.6 e 19.2.5 como corrigidas, respectivamente.
CVE-2026-23870 — negação de serviço em RSC (2026-05-06).O React informa que requisições HTTP especialmente criadas podem causar exceções por falta de memória ou consumo excessivo de CPU. As linhas afetadas dos pacotes react-server-dom-* vão até 19.0.5, 19.1.6 e 19.2.5.O React lista 19.0.6, 19.1.7 e 19.2.6 como corrigidas, respectivamente.
CVE-2026-44907 — negação de serviço em Server Functions (2026-07-21).O React informa que requisições HTTP especialmente criadas podem causar exceções por falta de memória ou consumo excessivo de CPU. As linhas afetadas dos pacotes react-server-dom-* vão até 19.0.7, 19.1.8 e 19.2.7.O React lista 19.0.8, 19.1.9 e 19.2.8 como corrigidas, respectivamente.

Fluxo de Ataque Passo a Paso

Passo 1

Uma fronteira RSC exposta recebe requisição sem autenticação

O React informa que o suporte a RSC podia afetar o app mesmo sem endpoint próprio de Server Function. Apps apenas cliente, sem servidor, ficam fora desta CVE.[1], [4]

Passo 2

Uma requisição preparada chega ao decoder de respostas vulnerável

O fornecedor descreve decodificação insegura de requisições Server Function. Os avisos omitiram uma receita completa; não deduza mecânicas não documentadas.[1], [2]

Passo 3

A execução ocorre com os privilégios do processo web

O aviso diz que o código executa com os privilégios do processo afetado. O impacto depende da conta do processo e dos segredos e serviços acessíveis.[1], [4]

Passo 4

O Google GTIG observou campanhas com túneis, downloaders, backdoors e mineradores

O GTIG observou campanhas com túneis, downloaders, backdoors e mineradores. Isso confirma exploração real, mas não prova que todo host vulnerável foi comprometido.[5], [6]

Código-Fonte: Vulnerável vs. Seguro

Este trecho exato do patch upstream retorna apenas uma exportação própria do módulo; não reproduz toda a falha do decodificador nem é uma correção independente. Atualize o pacote React Server Components ou o framework afetado.[2], [1]

Trecho de origem: Método requireModule() no cliente Parcel do React

IMPLEMENTAÇÃO VULNERÁVEL
export function requireModule<T>(metadata: ClientReference<T>): T {
  const moduleExports = parcelRequire(metadata[ID /* module id */]);
  return moduleExports[metadata[NAME]];
}
PATCH SEGURO E ROBUSTO
export function requireModule<T>(metadata: ClientReference<T>): T {
  const moduleExports = parcelRequire(metadata[ID /* module id */]);
  if (hasOwnProperty.call(moduleExports, metadata[NAME])) {
    return moduleExports[metadata[NAME]];
  }
  return (undefined: any);
}

Lista de Verificação de Segurança para Engenharia

Fontes