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
Strumenti/GitHubGitHub/ser0n-ath/multiparty-cve-2026-8161
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza Web
GitHubser0n-ath/multiparty-cve-2026-8161

multiparty-CVE-2026-8161

Proof-of-concept exploit per CVE-2026-8161, una vulnerabilità denial-of-service nel parser multipart di multiparty, che dimostra la prototype pollution che porta a un'eccezione non gestita e al crash.

Vedi Repository
14 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-2026-8161

Prova di concetto di CVE-2026-8161 (Multiparty)

Descrizione

[email protected] e versioni precedenti sono vulnerabili a denial of service tramite un'eccezione non gestita.

Il parser memorizza i campi e i file caricati in normali oggetti JavaScript e non distingue in modo sicuro le chiavi di proprietà del parser dalle proprietà ereditate dell'oggetto. Un nome di campo multipart appositamente creato può indurre il parser a leggere valori imprevisti dalla catena dei prototipi e a crashare durante la gestione del caricamento.

Qualsiasi servizio che accetta caricamenti multipart tramite versioni vulnerabili di multiparty può essere interessato.

Come funziona

Il problema si verifica perché fields e files sono normali oggetti JavaScript, ma vengono usati come mappe sicure chiave-valore per nomi controllati dall'utente.

root@kitploit:~
var fieldsArray = fields[name] || (fields[name] = [])
fieldsArray.push(value)

var filesArray = files[name] || (files[name] = [])
filesArray.push(file)

Il problema è che e usano una normale ricerca di proprietà JavaScript. Per gli oggetti semplici, quella ricerca può restituire proprietà ereditate dalla catena dei prototipi invece di soli valori memorizzati sull'oggetto stesso.

fields[name]
files[name]

Quando name è __proto__, JavaScript può risolverlo attraverso la catena dei prototipi e restituire l'oggetto prototipo ereditato invece di undefined. Poiché quel valore è truthy, l'assegnazione di fallback viene saltata e il parser non crea mai un vero array per quel campo.

La patch risolve il problema fidandosi solo delle chiavi che appartengono direttamente all'oggetto:

root@kitploit:~
var filesArray = Object.prototype.hasOwnProperty.call(files, name)
  ? files[name]
  : undefined

Poi il parser aggiunge solo quando il valore memorizzato è effettivamente un array, altrimenti ne inizializza uno nuovo:

root@kitploit:~
if (Array.isArray(filesArray)) {
  filesArray.push(file)
} else {
  files[name] = [file]
}

Quando .push() viene chiamato su un valore che non è un array, viene lanciato un TypeError. Poiché ciò accade all'interno del flusso di parsing asincrono di Multiparty, la normale gestione degli errori lato chiamante potrebbe non intercettarlo, consentendo all'eccezione di crashare il processo.

Cronologia

  • 2026-01-12: Vulnerabilità segnalata ai manutentori di multiparty.
  • 2026-01-17: Segnalazione accettata, iniziati i lavori di remediation.
  • 2026-02-14: Avviata la revisione coordinata con @pillarjs/security-triage.
  • 2026-02-16: Discussioni sulla patch -> Object.prototype.hasOwnProperty.call(...).
  • 2026-03-29: Titolo e metadati dell'advisory aggiornati per riflettere l'impatto di denial of service.
  • 2026-04: Approccio di remediation revisionato e approvato.
  • 2026-05-08: Advisory finalizzata e CVE-2026-8161 riservata.
  • 2026-05-11: Fix integrato in pillarjs:master.

Utilizzo della Demo

Esegui l'ambiente mocklab e invia il payload di test a entrambi i target:

root@kitploit:~
docker compose up -d
python3 secdos.py -u http://localhost:8080/api/submit
python3 secdos.py -u http://localhost:8081/api/submit

Il target vulnerabile crasha e restituisce [PASS]. Il target corretto gestisce la richiesta in modo sicuro e restituisce [FAIL].

Se riesegui contro il server vulnerabile, riavvialo prima

Panoramica della configurazione

Server Vulnerabile

  • Accesso su localhost:8080
  • Server Nginx che funge da reverse proxy, in caso di errore mostra una pagina di errore con stato 502
  • Nginx risolve l'indirizzo del server vulnerabile tramite il nome del servizio
  • Usa multiparty 4.2.3 (vulnerabile)

Server Corretto

  • In esecuzione e accessibile su localhost:8081
  • Nginx non richiesto
  • Usa multiparty 4.3.0 (corretto)

La creazione di un'immagine corretta dal dockerfile richiede un build arg PATCHED=1

Riferimenti

https://github.com/pillarjs/multiparty/security/advisories/GHSA-qxch-whhj-8956 https://github.com/pillarjs/multiparty/commit/8ee6aca09aca29e923da48da8260c87aa964b282

Scarica lo strumento