pnpm vs npm エクスプロイトこのリポジトリは、tarball からの npm と pnpmのインストール方法の違いがどのように悪用され得るかを示しています。
このエクスプロイトは CVE-2023-37478 に記録されています。
ここで構築された JavaScript パッケージは、ユーザーに良いメッセージを表示すると主張しています。npm でインストールした場合、これは本当です。
しかし、同じパッケージを pnpm でインストールすると、意地悪なメッセージが表示されます。
これがより悪意のある形で悪用される可能性は想像に難くないでしょう。
このエクスプロイトで動作する古い脆弱なバージョンの pnpm は こちら にあります。 これは 新しいバージョンの pnpm で修正されており、修正内容は こちら で確認できます。
exploitative_package_src には、パッケージ のソースが含まれています。
フォルダ (V0.1) には悪意のあるコードが含まれ、 (V0.2) には無害なコードが含まれています。
は、悪意のあるバージョンが無害なバージョンより先に tarball に追加されるように tar パッケージを構築します。
definitely_benign_packagebad_versiongood_versionmake_tar.shデモを行うには、コンパイル済みの definitely_benign_package.tgz を /use_demonstration/ に移動/コピーし、npm または pnpm でインストールします。これは make pnpm/npm で短縮できます(終了後は make clean も機能します)。
インストール後、node words_of_affirmation.js で肯定的な言葉のスクリプトを実行します。