
CVE-2023-37478 montre comment une différence dans l'installation des packages entre npm et pnpm pourrait être exploitée par un paquet tar.gz bien conçu. Ce dépôt montre une démo.
pnpm vs npm exploitCe repo montre comment une différence dans l'installation de npm et pnpminstallation à partir de tarballs peut être exploitée.
L'exploit est enregistré dans CVE-2023-37478.
Le package javascript construit ici prétend afficher un joli message à l'utilisateur. Lorsqu'il est installé avec npm, c'est vrai.
Cependant, le même package peut être installé avec pnpm et il affichera un message méchant.
On pourrait imaginer comment cela pourrait être exploité de manière plus malveillante.
Vous pouvez trouver une ancienne version vulnérable de pnpm ici qui fonctionne avec cet exploit. Cela est corrigé dans les versions plus récentes de pnpm et le correctif peut être vu ici
exploitative_package_src contient le source du package definitely_benign_package.
Le dossier bad_version (V0.1) contient du code malveillant, et good_version (V0.2) contient du bon code.
make_tar.sh construit le package tar de sorte que la version malveillante soit ajoutée au tarbal avant la bonne version.
Pour une démo, déplacez/clonez le definitely_benign_package.tgz compilé dans /use_demonstration/ et installez via npm ou pnpm, cela peut être raccourci avec make pnpm/npm (make clean fonctionne aussi une fois que vous avez terminé).
Une fois installé, exécutez le script de mots d'affirmation avec node words_of_affirmation.js.