React2Shell - CVE-2025-55182 - Risco de execução remota de código

React2Shell: CVE-2025-55182 e o risco de execução remota de código no Next.js

TL, DR

React2Shell (CVE-2025-55182) cria um crítico risco RCE em Componentes de servidor React (RSC) e estruturas que as incorporam, incluindo Próximo.jsPorque a vulnerabilidade reside dentro do RSC na camada de serialização e desserialização, os atacantes podem enviar uma solicitação HTTP manipulada e desencadear um problema. execução de código remoto não autenticado, mesmo quando as equipes executam configurações padrão do framework. Próximo.js Os aplicativos enfrentam a maior exposição porque aceitam e processam Reagir voo Por padrão, os payloads são enviados via HTTP.

A falha afeta várias versões de Pacotes de servidor ReactE os atacantes não precisam de lógica de aplicação personalizada para explorá-la. Pesquisadores de segurança demonstram uma confiabilidade próxima a 100%, e as primeiras análises revelam que muitos ambientes de nuvem são vulneráveis. Próximo.js instâncias. As equipes devem corrigir isso imediatamente. e validar todo o seu ecossistema para reduzir o Risco de execução remota de código (RCE) no React2Shell (CVE-2025-55182).

Uma vulnerabilidade crítica relatada por meio do programa de recompensas por bugs da Meta em 29 de novembro desencadeou respostas urgentes em todo o ecossistema JavaScript.

Designado CVE-2025-55182, divulgada em 3 de dezembro, agora referida como React2Shell é uma vulnerabilidade de gravidade máxima que impacta Componentes do servidor React juntamente com frameworks que os incorporam. Inicialmente, um identificador de vulnerabilidade separado para o Next.js (CVE-2025-66478) foi atribuído, mas o NVD posteriormente o consolidou no CVE principal do React como uma entrada duplicada.

A questão fundamental é a mesma: o tratamento inseguro de payloads RSC serializados que podem ser acionados por meio de uma requisição HTTP. Isso abre caminho para que um agente malicioso envie uma requisição HTTP manipulada, resultando na execução de JavaScript arbitrário no servidor após ser processado. desserializado pelo React.

CVE-2025-55182 Visão geral

Os componentes de servidor do React estão profundamente integrados em frameworks modernos e, em muitos casos, são habilitados por padrão. Por isso, os aplicativos podem ficar expostos a React2Shell (CVE-2025-55182) Mesmo que nunca definam explicitamente um endpoint de Função de Servidor, a implementação do RSC ainda está presente, e isso por si só é suficiente para ativar caminhos de código vulneráveis ​​e criar uma ameaça significativa. risco RCE.

A falha decorre da forma como o Protocolo React FlightO sistema processa determinados payloads estruturados. Versões antigas tentavam percorrer os caminhos dos objetos fornecidos no payload sem verificar se a estrutura era válida ou esperada. Um atacante poderia manipular esse processo e, por fim, obter execução de código no servidor. Não era necessária autenticação, configuração especial ou lógica específica do aplicativo. Como o problema existe em configurações padrão, standard As implantações são expostas sem a necessidade de quaisquer condições incomuns.

A exploração ocorre quando os atacantes enviam solicitações HTTP POST maliciosas que abusam do “vm.executarNesteContextoO mecanismo de ataque remoto é explorado por meio de ações do servidor. Embora o React não exponha diretamente o endpoint vulnerável, o Next.js o faz, criando um vetor de ataque remoto genuíno. 

O Next.js aceita payloads de voos de qualquer requisição, processa-os sem a devida validação e os passa para o desserializador do React. O sistema trata essas entradas externas como confiáveis, permitindo que atacantes alcancem execução remota de código por meio de pontos de extremidade publicamente acessíveis com privilégios totais de processo do Node.js no servidor de destino. 

A gravidade aumenta significativamente porque as configurações padrão continuam vulneráveis ​​a React2Shell (CVE-2025-55182) e o resultado risco RCE. UMA standard Aplicativo Next.js que você cria com create-next-app A vulnerabilidade se expõe sem exigir nenhum código personalizado ou alterações de configuração. Pesquisadores de segurança confirmam uma confiabilidade de exploração de quase 100% e relatam que 39% dos ambientes em nuvem executam instâncias vulneráveis, enquanto 44% de todos os ambientes executam aplicativos Next.js expostos publicamente afetados pela vulnerabilidade. React2Shell.

Compreendendo a exposição ao React2Shell

As versões vulneráveis ​​abrangem várias versões:

Componente Versões afetadas
react-server-dom-webpack 19.0, 19.1.0, 19.1.1, 19.2.0
react-server-dom-parcel 19.0, 19.1.0, 19.1.1, 19.2.0
react-server-dom-turbopack 19.0, 19.1.0, 19.1.1, 19.2.0

Como muitos frameworks incorporam suporte a RSC em seu núcleo, os aplicativos frequentemente herdam o código vulnerável sem perceber. Qualquer framework ou bundler que distribua esses pacotes pode expor o aplicativo ao React2Shell (CVE-2025-55182) e ao risco de execução remota de código (RCE). Isso inclui:

  • Next.js (roteador de aplicativos)
  • Prévia do React Router RSC
  • Plugin Vite RSC
  • Plugin Parcel RSC
  • SDK Redwood
  • Waku
  • Exposição

O Next.js é particularmente afetado porque usa endpoints relacionados ao RSC via HTTP por padrão. Versões que começam com o 14.3.0 versões canary, juntamente com a maioria 15.x e cedo 16.x As versões lançadas contêm a implementação vulnerável. Qualquer pessoa que execute a versão canary. 14.3.0-canário.77 ou mais tarde deveria voltar ao estável 14.x ramificação até que uma versão canary corrigida seja publicada.

Versões corrigidas do Next.js incluir:

Componente Versões corrigidas
Próximo.js 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7

Provas de conceito públicas e detecção confiável

Após a divulgação da vulnerabilidade, inúmeras supostas provas de conceito começaram a circular. Muitas delas eram imprecisas ou baseadas em premissas falhas. O autor original da vulnerabilidade, Lachlan Davidson, confirmou publicamente em react2shell que os PoCs do GitHub que estão circulando não correspondem ao exploit compartilhado privadamente com os mantenedores do React/Next.js e fornecido por ele próprio PoC

Um dos principais problemas das primeiras tentativas públicas é a sua incapacidade de reconhecer que a exploração tem sucesso contra standard Implantações do Next.js sem a necessidade de lógica de aplicação específica ou funções do lado do servidor.

Pesquisadores de segurança de diversas organizações enfatizaram que detectar a vulnerabilidade exige mais do que simplesmente identificar a presença do RSC. A equipe da Assetnote publicou um artigo sobre o assunto. método de detecção confiável e uma digitalizador capaz de confirmar o problema sem usar nenhuma lógica de exploração. O Metasploit em breve terá um exploit disponível também para esta vulnerabilidade. 

A abordagem de detecção aproveita a forma como o React Server lida com referências de propriedades de objetos usando delimitadores de dois pontos dentro do objeto. ReactFlightClientConfigBundlerWebpack.js/requireModule() função. Quando versões vulneráveis ​​processam uma carga útil multipart com estrutura especial que tenta percorrer caminhos de objetos aninhados inexistentes, elas acionam respostas de erro previsíveis. Uma solicitação de diagnóstico envia um padrão de referência como `$1:a:a` emparelhado com um objeto vazio. Implementações vulneráveis ​​tentam resolver isso como acesso a uma propriedade aninhada em um valor indefinido, resultando em uma exceção. O servidor retorna um status 500 com um padrão de resumo de erro distinto no corpo da resposta. 

export function requireModule<T>(metadata: ClientReference<T>): T {
  let moduleExports = __webpack_require__(metadata[ID]);
  if (isAsyncImport(metadata)) {
    if (typeof moduleExports.then !== 'function') {
      // This wasn't a promise after all.
    } else if (moduleExports.status === 'fulfilled') {
      // This Promise should've been instrumented by preloadModule.
      moduleExports = moduleExports.value;
    } else {
      throw moduleExports.reason;
    }
  }
  if (metadata[NAME] === '*') {
    // This is a placeholder value that represents that the caller imported this
    // as a CommonJS module as is.
    return moduleExports;
  }
  if (metadata[NAME] === '') {
    // This is a placeholder value that represents that the caller accessed the
    // default property of this if it was an ESM interop module.
    return moduleExports.__esModule ? moduleExports.default : moduleExports;
  }
  return moduleExports[metadata[NAME]];
}

Ações imediatas para organizações afetadas pelo React2Shell (CVE-2025-55182) e pelo risco de execução remota de código.

Realize uma análise completa do seu código-fonte e dos aplicativos implantados. Para localizar versões vulneráveis ​​de pacotes, preste atenção especial às dependências diretas de pacotes do servidor React, implementações RSC em nível de framework (Next.js, Waku, Redwood, etc.), aplicativos criados com `create-next-app` ou ferramentas de scaffolding similares e aplicativos conteinerizados que podem conter imagens base desatualizadas.

Análise de composição de software (SCA) ferramentas como Xygeni SCA Pode descobrir automaticamente as dependências afetadas em todo o seu inventário de software. 

Corrija imediatamente:

Atualize para versões corrigidas, como React (19.0.1, 19.1.2, 19.2.1), Next.js (15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7) e quaisquer pacotes de framework que incluam RSC. Essas atualizações introduzem validação rigorosa para o tratamento de payloads RSC e impedem a desreferenciação insegura de propriedades que possibilita a exploração. 

Ferramentas automatizadas de remediação, como Recurso de autorremediação do Xygeni, pode acelerar o processo em grandes bases de código.

Implementar proteções temporárias no WAF:

Enquanto as correções se propagam pela sua implantação pipelineAtive as regras do Firewall de Aplicativos Web para proteção imediata. Os principais provedores de nuvem lançaram conjuntos de regras de emergência. CloudflareProteção automática para todos os níveis quando o tráfego React é roteado por proxy, bem como AWS, Akamai, Fastly, Google Cloud Disponibilizamos regras defensivas semelhantes. Ative esses controles imediatamente para criar uma camada protetora durante o período de transição.

Monitore o tráfego HTTP suspeito:

Configure o registro e os alertas para indicadores de tentativas de exploração: payloads do protocolo RSC Flight malformados ou inesperados, padrões incomuns de erros 500 em endpoints RSC, solicitações POST com cabeçalhos `Next-Action` ou `Next-Router-State-Tree` suspeitos, solicitações repetidas para caminhos `/_next/` com payloads multipart.

Verifique a lista de materiais do seu software:

Muitos frameworks agrupam as dependências RSC de forma transparente, tornando-as invisíveis em análises superficiais de dependências. Examine sua configuração completa. SBOM Para garantir: que não restem dependências transitivas em pacotes vulneráveis ​​do servidor React e que as atualizações do framework não tenham introduzido inadvertidamente implementações antigas do RSC.

Pensamentos de Encerramento

O React2Shell está entre as vulnerabilidades mais graves do ecossistema JavaScript nos últimos anos, não pela complexidade da exploração, mas sim pela profunda integração do RSC nas ferramentas atuais. Agora que as correções estão disponíveis em todo o ecossistema, as equipes precisam implementar as atualizações em produção o mais rápido possível.

Se sua aplicação utiliza os recursos de servidor do React, seja direta ou indiretamente, você deve tratar essa vulnerabilidade como uma correção de prioridade máxima.

sca-tools-software-composição-análise-ferramentas
Priorize, corrija e proteja seus riscos de software
você recebe uma avaliação gratuita de 7 dias da nossa licença Business Edition e pode aproveitar alguns dos recursos avançados da plataforma SecurityScorecard.
Não é necessário cartão de crédito

Proteja seu desenvolvimento e entrega de software

com o Suíte de Produtos da Xygeni