
CVE-2023-37478 zeigt, wie ein Unterschied in npm- und pnpm-Installationspaketen ausgenutzt werden kann, indem ein sorgfältig erstelltes tar.gz-Paket verwendet wird. Dieses Repository zeigt eine Demo.
pnpm vs npm ExploitDieses Repository zeigt, wie ein Unterschied in der Installation von npm und pnpm aus Tarballs ausgenutzt werden kann.
Der Exploit ist in CVE-2023-37478 dokumentiert.
Das hier erstellte JavaScript-Paket gibt vor, eine nette Nachricht an den Benutzer auszugeben. Bei Installation mit npm trifft dies zu.
Das gleiche Paket kann jedoch mit pnpm installiert werden und gibt dann eine gemeine Nachricht aus.
Man kann sich vorstellen, wie dies bösartiger ausgenutzt werden könnte.
Sie finden eine alte, anfällige Version von pnpm hier, die mit diesem Exploit funktioniert. Dies ist in neueren Versionen von pnpm behoben und der Fix kann hier eingesehen werden
exploitative_package_src enthält den Quellcode für das Paket definitely_benign_package.
Der Ordner bad_version (V0.1) enthält bösartigen Code und good_version (V0.2) enthält guten Code.
make_tar.sh erstellt das Tar-Paket so, dass die schlechte Version vor der guten Version zum Tarball hinzugefügt wird.
Für eine Demo verschieben/klonen Sie das kompilierte definitely_benign_package.tgz in /use_demonstration/ und installieren Sie es mit npm oder pnpm, dies kann mit make pnpm/npm abgekürzt werden (make clean funktioniert auch, wenn Sie fertig sind).
Sobald es installiert ist, führen Sie das Bestätigungsskript mit node words_of_affirmation.js aus.