Skip to content
KitploitKITPLOIT
StrumentiBlog
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-2025-65945-poc — PoC per CVE-2025-65945 (Verifica impropria della firma crittografica in node-jws) | Kitploit
Strumenti/GitHubGitHub/jedisct1/cve-2025-65945-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebCrittografiaPenetration TestingAutenticazione
GitHubjedisct1/cve-2025-65945-poc

CVE-2025-65945-poc

PoC per CVE-2025-65945 (Verifica impropria della firma crittografica in node-jws)

Vedi Repository
518 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

CVE-2025-65945: Bypass della firma in node-jws

Questa è una proof of concept per un bypass della verifica della firma nella libreria node-jws. Il bug consente agli attacker di forgiare JWT validi quando il server deriva i segreti HMAC da dati controllati dall'utente.

Qual è il bug?

La funzione jws.createVerify() non verifica che sia stato effettivamente fornito un segreto quando vengono utilizzati algoritmi HMAC. Se la tua app cerca i segreti in base a qualcosa contenuto nel JWT (come l'header kid) e la ricerca fallisce, potresti finire per verificare contro un segreto vuoto.

Un attacker può sfruttare questo bug:

  1. Inviando un JWT con un key ID falso che non esiste nel tuo database
  2. Firmando il proprio payload malevolo usando una stringa vuota come segreto
  3. La ricerca sul tuo server restituisce undefined, che viene convertito in stringa vuota
  4. Entrambe le parti ora concordano sul "segreto" (stringa vuota), quindi la firma risulta valida

L'attacker può ora impersonare chiunque o concedersi privilegi da amministratore.

Versioni affette

  • jws 3.2.2 e precedenti
  • jws 4.0.0

Esegui l'aggiornamento a 3.2.3+ o 4.0.1+ per risolvere il problema.

Esecuzione della PoC

Assicurati di avere Bun installato, poi:

root@kitploit:~
# Installa la versione vulnerabile
bun install [email protected]

# Esegui l'exploit
bun run exploit.js

Dovresti vedere un output che mostra un token admin contraffatto accettato come valido.

Cosa fa l'exploit?

La PoC simula un server che:

  • Ha un archivio di segreti con un paio di chiavi API
  • Cerca i segreti in base all'header kid (key ID) del JWT
  • Usa createVerify() con l'API streaming

L'attacker crea un JWT con kid: "non-existent-key" e lo firma con un segreto vuoto. Quando il server tenta di cercare questa chiave, ottiene undefined, scrive una stringa vuota nello stream di verifica e il token contraffatto supera la validazione.

Testare la correzione

root@kitploit:~
# Aggiorna alla versione patchata
bun install [email protected]

# Esegui di nuovo - ora dovrebbe fallire
bun run exploit.js

Con la versione patchata vedrai un errore: secret must be a string or buffer or a KeyObject. La correzione valida che le operazioni HMAC abbiano un segreto appropriato prima di procedere.

Il pattern di codice vulnerabile

Se il tuo codice assomiglia a questo, potresti essere affetto:

root@kitploit:~
const decoded = jws.decode(token);
const secret = lookupSecret(decoded.header.kid); // might return undefined!

const verifier = jws.createVerify({
  algorithm: "HS256",
  signature: token,
});

verifier.secret.write(secret); // oops
verifier.secret.end();

Riferimenti

  • GitHub Advisory
  • Fix commit
Scarica lo strumento