Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2025-55182-analysis — Uma breve discussão sobre a análise de vulnerabilidade RCE em React Server Components | Kitploit
Ferramentas/GitHubGitHub/airis101/cve-2025-55182-analysis
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebPapers e PesquisaAprendizado e Educação
GitHubairis101/cve-2025-55182-analysis

CVE-2025-55182-analysis

Uma breve discussão sobre a análise de vulnerabilidade RCE em React Server Components

Ver Repositório
1há 5 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

1. Visão Geral da Vulnerabilidade

Nos últimos dias, uma vulnerabilidade de RCE por desserialização no React tem causado alvoroço, com a CVSS oficial atribuindo uma pontuação máxima de 10,0, igualando-se ao Log4j da época. Imediatamente, espalharam-se rumores de que se tratava do "Log4j do frontend moderno", causando pânico entre desenvolvedores de várias empresas. Assim, ao acordar, todos começaram a pesquisar documentação e aplicar patches... Simultaneamente, também surgiram muitas vozes de dúvida online. Alguns testaram e descobriram que a vulnerabilidade não era tão grave como se propagava; pelo contrário, a exploração exigia certas condições. Por isso, decidi dedicar algum tempo para estudar a fundo esta vulnerabilidade.

1.1 Informações da Vulnerabilidade

  • ID CVE: CVE-2025-55182
  • Pontuação CVSS: 10.0 (Crítica)
  • Tipo de Vulnerabilidade: Poluição de protótipo → Execução Remota de Código
  • Versões Afetadas: react-server-dom-webpack < 19.2.0, react-server-dom-turbopack < 19.2.0
  • Escopo de Impacto: Aplicações que usam React Server Components

2. Análise do Princípio da Vulnerabilidade

2.1 Causa Raiz da Vulnerabilidade

A causa desta vulnerabilidade é a seguinte: no [email protected], a função chave do servidor para analisar Server Actions é requireModule (pseudocódigo):

root@kitploit:~
function requireModule(metadata) {
  var moduleExports = __webpack_require__(metadata[0]);
  // ...
  return "*" === metadata[2]
    ? moduleExports
    : "" === metadata[2]
      ? moduleExports.__esModule
        ? moduleExports.default
        : moduleExports
      : moduleExports[metadata[2]];  // ← Ponto vulnerável
}

2.2 Problema Central da Vulnerabilidade

O núcleo do problema está na parte moduleExports[metadata[2]], que não valida o metadata[2]. Isso permite que o invasor não apenas acesse as propriedades exportadas pelo próprio módulo, mas também propriedades na cadeia de protótipos (como constructor, __proto__, etc.). Quando o invasor manipula metadata[0] (por exemplo, apontando-o para vm), ele pode então manipular metadata[2] para exportar métodos perigosos de módulos específicos, como vm.runInThisContext, resultando na exploração da vulnerabilidade.


3. Análise de Exploração da Vulnerabilidade

Na minha análise, consultei o ambiente de teste e a exploração fornecidos por ejpir, usando como exemplo o gadget vm_runInThisContext para executar código. O processo é o seguinte (nota: em ambientes reais, o processo de exploração pode ter diferenças!):

Passo 1: Receber a Solicitação

Primeiro, após enviar uma solicitação com o payload, defino um ponto de interrupção no local onde a solicitação é recebida:

Passo 2: Analisar os Dados do Formulário

Em seguida, o programa executa até const formData = parseMultipart(buffer, boundaryMatch[1]);. Entro em parseMultipart

parseMultipart extrai os dados do corpo da solicitação e os retorna para formData

Passo 3: Chamar decodeAction (Entrada da Vulnerabilidade)

Entro em const actionFn = await decodeAction(formData, serverManifest); Local onde a vulnerabilidade é gerada

Entro em loadServerReference

Passo 4: Código Principal da Vulnerabilidade requireModule

Agora chegamos ao código principal onde a vulnerabilidade é gerada, requireModule. Entro

Retorna o valor id com o # como separador entre módulo e método, e o valor do parâmetro bound como argumento do método

Passo 5: Executar o Payload

Entro em actionFn e executo o payload final

A exploração da vulnerabilidade está concluída!


4. Resumo e Defesas

Esta vulnerabilidade, em si, ainda é causada por validação insuficiente de entrada, exatamente como Log4j e fastjson. No teste acima, usei vm_runInThisContext, mas na verdade existem múltiplos gadgets exploráveis para esta vulnerabilidade, como:

  • vm#runInThisContext
  • vm#runInNewContext
  • child_process#execSync
  • child_process#execFileSync
  • child_process#spawnSync
  • fs#readFileSync
  • fs#writeFileSync
  • #constructor
  • #__proto__
  • #prototype

O invasor pode usar esta vulnerabilidade para conseguir:

  • Execução Remota de Código (RCE): Através de vm#runInThisContext ou child_process#execSync para executar comandos arbitrários do sistema
  • Operações no Sistema de Arquivos: Através de fs#readFileSync, fs#writeFileSync para ler/escrever arquivos arbitrários
  • Ataques de Persistência: Escrever chaves públicas SSH, modificar .bashrc, sobrescrever arquivos da aplicação, etc.
  • Vazamento de Informações: Ler arquivos de configuração sensíveis (.env, chaves privadas, credenciais de banco de dados, etc.)

Com base nisso, podemos fornecer as seguintes medidas de defesa:

1. Defesa Temporária

Para defesa temporária, podemos considerar os seguintes ângulos: configurar regras de bloqueio para esses campos perigosos no WAF para interceptar ataques maliciosos em tempo hábil. Além disso, também podemos fazer correspondência e bloqueio no Nginx, como abaixo:

root@kitploit:~
# Exemplo de configuração Nginx
location /formaction {
    # Bloquear solicitações que contenham referências a módulos perigosos
    if ($request_body ~* "(vm#|child_process#|fs#|module#)") {
        return 403;
    }
    # Bloquear tentativas de poluição de protótipo
    if ($request_body ~* "(#constructor|#__proto__|#prototype)") {
        return 403;
    }
}

2. Atualizar o Mais Rápido Possível

A equipe oficial já lançou uma atualização de segurança. Atualize imediatamente para a versão segura!:

root@kitploit:~
# Atualizar react-server-dom-webpack
npm install react-server-dom-webpack@>=19.2.0

# Atualizar react-server-dom-turbopack
npm install react-server-dom-turbopack@>=19.2.0

# Usuários do Next.js
npm install next@>=15.0.5

Versões Corrigidas:

  • react-server-dom-webpack: >= 19.2.0
  • react-server-dom-turbopack: >= 19.2.0
  • next.js: >= 15.0.5

Ao analisar a vulnerabilidade acima, consultei o exp relacionado de whiteov3rflow e escrevi uma ferramenta de detecção para a vulnerabilidade no ambiente de teste, que coloquei no repositório do GitHub. Colegas que precisam se autoavaliar podem acessar para obter (nota: devido ao ambiente de teste do autor original, atualmente pode ser aplicável apenas ao ambiente de teste original. Aguardará melhorias futuras. Colegas que precisarem podem modificar por conta própria...). Lembre-se de usar com autorização legal. Proibido usar para destruição não autorizada!

3. Seja Cauteloso nas Palavras e Ações!

Até agora, 5 de dezembro de 2025, o que vi online é que o "burburinho" sobre esta vulnerabilidade tem sido como uma montanha-russa: ora "bomba nuclear", ora "buraco d'água", depois novamente "bomba nuclear"... As formas de exploração são cada vez mais variadas. Com base nas informações atuais, a "bomba nuclear" pode se confirmar, mas o escopo de impacto é menor que o do Log4j. No entanto, independentemente disso, todos os envolvidos devem atualizar o mais rápido possível para evitar problemas futuros!!!

Além disso, dou um conselho de segurança aos desenvolvedores: nunca confie na entrada do usuário. Log4j, fastjson e o atual React RCE sucumbiram exatamente por isso. Portanto, no desenvolvimento real de negócios, para posições perigosas, é essencial usar métodos como sandbox ou lista de permissões para validação rigorosa, evitando tragédias!!!

Na teoria é fácil, mas na prática é preciso agir com cautela.


Referências

  • Comunicado Oficial do CVE-2025-55182
  • Aviso de Segurança do React
  • PoC no GitHub por ejpir
  • Documentação do React Server Components
Baixar ferramenta