Falha crítica no react server permite execução remota de código sem autenticação

4 минут чтения

Falha crítica no React Server permite execução remota de código sem autenticação

Uma vulnerabilidade crítica em componentes do React executados no servidor pode permitir que um invasor rode código remotamente, sem precisar entrar na aplicação. O alerta de segurança, divulgado pela equipe do React em 14 de outubro sob o identificador GHSA-xqc2-xf4c-x3h3, aponta riscos para a confidencialidade dos dados, a integridade dos sistemas e a disponibilidade dos serviços. A falha não recebeu um número CVE; por isso, sua identificação é feita pelo código do aviso de segurança.

O problema está relacionado ao processamento de requisições destinadas a aplicações que utilizam React Server Components. Segundo o comunicado, uma carga especialmente preparada pode explorar uma condição envolvendo respostas com vários arrays tipados junto a dados controlados por um atacante. Esses arrays armazenam valores numéricos em formatos predefinidos. O aviso, porém, não detalha todo o mecanismo que conecta essa condição à execução de código.

O principal fator de gravidade é a ausência de barreiras de acesso. A exploração não exige uma conta, privilégios ou qualquer ação de uma pessoa usuária. Em tese, basta que um invasor remoto envie uma requisição construída para atingir uma aplicação vulnerável e alcançar a execução de código no servidor.

Pacotes e versões vulneráveis

A falha afeta três pacotes usados para integrar o React Server Components a diferentes ferramentas de compilação:

– `react-server-dom-webpack`;
– `react-server-dom-parcel`;
– `react-server-dom-turbopack`.

De acordo com o aviso, estão vulneráveis as versões 19.0.0 a 19.0.8, 19.1.0 a 19.1.9, 19.2.0 a 19.2.8 e a versão 19.3.0. As versões corrigidas são 19.0.9, 19.1.10, 19.2.9 e 19.3.1, respectivamente.

A equipe do React recomenda atualizar os pacotes afetados o quanto antes e confirmar a versão instalada com base nas faixas indicadas no alerta. Não foi divulgada uma medida alternativa de mitigação para quem não puder atualizar imediatamente. Por isso, manter uma versão vulnerável em produção representa um risco que não deve ser considerado resolvido por ajustes informais na configuração.

Como verificar se uma aplicação está exposta

Usar React, por si só, não significa que um projeto esteja vulnerável. O risco está associado à execução de código no servidor e ao uso de pacotes, frameworks, empacotadores ou plugins que dão suporte aos React Server Components. Aplicações que não executam React no servidor não são afetadas por essa condição, segundo o aviso.

A verificação deve começar pela lista de dependências do projeto. Desenvolvedores podem procurar os pacotes `react-server-dom-webpack`, `react-server-dom-parcel` e `react-server-dom-turbopack` nos arquivos de dependências e no ambiente usado para compilar e executar a aplicação. Também é importante conferir a versão efetivamente instalada: a declarada no projeto pode não corresponder à utilizada após a instalação ou a atualização das dependências.

Depois de identificar os componentes envolvidos, a equipe responsável deve comparar cada versão com as faixas vulneráveis e aplicar a correção correspondente. Em projetos que utilizam frameworks, vale verificar também se eles incorporam esses pacotes internamente. A ausência de uma dependência direta não é, por si só, prova de que a aplicação esteja protegida.

O que fazer após a atualização

A correção precisa chegar a todos os ambientes relevantes, não apenas ao computador de desenvolvimento. Isso inclui servidores de produção, ambientes de teste, imagens de contêiner e processos automatizados de implantação. Se a dependência estiver presente em mais de um serviço, cada instância deve ser revisada para evitar que uma versão antiga continue acessível.

Após atualizar, é recomendável executar a instalação limpa das dependências, reconstruir a aplicação e confirmar que o processo de implantação está usando a versão corrigida. O monitoramento do serviço também ajuda a identificar comportamentos inesperados. Caso haja indícios de acesso indevido, a atualização corrige a vulnerabilidade, mas não substitui a análise de possíveis impactos anteriores.

O alerta de outubro não deve ser confundido com o React2Shell, identificado como CVE-2025-55182. Uma falha não comprova a exploração da outra, e ataques associados ao React2Shell não demonstram, por si só, que este problema também esteja sendo explorado. Até a publicação da cobertura original, não havia registro público de exploração ativa desta vulnerabilidade.

O comunicado também relaciona o mesmo padrão a problemas em componentes do Next.js, incluindo uma falha em Cache Components que envolve múltiplos arrays tipados. Essa associação sugere que a questão pode ultrapassar um único pacote: aplicações diferentes podem compartilhar mecanismos ou formas de processamento semelhantes. Para as equipes de desenvolvimento, isso reforça a importância de acompanhar os avisos de segurança dos frameworks utilizados e não limitar a revisão a uma única dependência.

Como a falha pode levar à execução de código no servidor sem autenticação, a prioridade deve ser identificar rapidamente os pacotes presentes, confirmar suas versões e atualizar os componentes afetados. Em ambientes nos quais a mudança não possa ser aplicada de imediato, a equipe deve tratar a situação como um risco pendente e planejar a correção com urgência, já que não foi indicada uma mitigação substituta.