
CVE-2023-37478 demonstra como uma diferença na forma como npm e pnpm instalam pacotes que poderia ser explorada por um pacote tar.gz bem elaborado. Este repositório mostra uma demonstração.
pnpm vs npmEste repositório mostra como uma diferença na instalação a partir de tarballs entre npm e pnpm pode ser explorada.
A exploração está registada em CVE-2023-37478.
O pacote javascript aqui construído afirma que imprime uma mensagem agradável para o utilizador. Quando instalado com npm, isto é verdade.
No entanto, o mesmo pacote pode ser instalado com pnpm e imprimirá uma mensagem desagradável.
Podemos imaginar como isto poderia ser explorado de forma mais maliciosa.
Pode encontrar uma versão antiga e vulnerável do pnpm aqui que funciona com esta exploração. Isto está corrigido em versões mais recentes do pnpm e a correção pode ser vista aqui
exploitative_package_src contém o código-fonte do pacote definitely_benign_package.
A pasta bad_version (V0.1) contém código malicioso, e good_version (V0.2) contém código benigno.
make_tar.sh constrói o pacote tar de forma que a versão má é adicionada ao tarball antes da versão boa.
Para uma demonstração, mova/clone o definitely_benign_package.tgz compilado para /use_demonstration/ e instale via npm ou pnpm, isto pode ser atalhado com make pnpm/npm (make clean também funciona quando terminar).
Uma vez instalado, execute o script de palavras de afirmação com node words_of_affirmation.js.