
CVE-2023-37478 mostra come una differenza nei pacchetti installati da npm e pnpm potrebbe essere sfruttata da un pacchetto tar.gz ben costruito. Questo repository mostra una demo.
pnpm vs npm sfruttamentoQuesto repository mostra come una differenza nell'installazione da tarball di npm e pnpm possa essere sfruttata.
Lo sfruttamento è registrato in CVE-2023-37478.
Il pacchetto javascript costruito qui afferma di stampare un bel messaggio all'utente. Quando installato con npm, questo è vero.
Tuttavia, lo stesso pacchetto può essere installato con pnpm e stamperà un messaggio cattivo.
Si potrebbe immaginare come questo potrebbe essere sfruttato in modo più dannoso.
Puoi trovare una vecchia versione vulnerabile di pnpm qui che funziona con questo sfruttamento. Questo è risolto nelle versioni più recenti di pnpm e la correzione può essere vista qui
exploitative_package_src contiene il codice sorgente del pacchetto definitely_benign_package.
La cartella bad_version (V0.1) contiene codice malevolo, e good_version (V0.2) contiene codice buono.
make_tar.sh costruisce il pacchetto tar in modo tale che la versione cattiva venga aggiunta al tarball prima della versione buona.
Per una demo, sposta/clona il definitely_benign_package.tgz compilato in /use_demonstration/ e installa tramite npm o pnpm, questo può essere velocizzato con make pnpm/npm (make clean funziona anche quando hai finito).
Una volta installato, esegui lo script di affermazioni con node words_of_affirmation.js.