
CVE-2023-37478 يُظهر كيف أن الاختلاف في تثبيت الحزم بين npm و pnpm يمكن استغلاله بواسطة حزمة tar.gz مُعدة جيدًا. يُظهر هذا المستودع عرضًا توضيحيًا.
pnpm مقابل npm استغلاليُظهر هذا المستودع كيف يمكن استغلال الفرق في تثبيت npm و pnpm من ملفات tarball.
تم تسجيل الاستغلال في CVE-2023-37478.
حزمة الجافا سكريبت المُنشأة هنا تدّعي أنها تطبع رسالة لطيفة للمستخدم. عند تثبيتها باستخدام npm، هذا صحيح.
ومع ذلك، يمكن تثبيت نفس الحزمة باستخدام pnpm وستطبع رسالة قاسية.
يمكن للمرء أن يتخيل كيف يمكن استغلال هذا بشكل أكثر خبثًا.
يمكنك العثور على إصدار قديم وضعيف من pnpm هنا يعمل مع هذا الاستغلال. تم إصلاح هذا في إصدارات أحدث من pnpm ويمكن رؤية الإصلاح هنا
يحتوي exploitative_package_src على مصدر الحزمة definitely_benign_package.
يحتوي المجلد bad_version (V0.1) على كود ضار، و good_version (V0.2) يحتوي على كود جيد.
يقوم make_tar.sh ببناء حزمة tar بحيث يتم إضافة الإصدار السيئ إلى tarbal قبل الإصدار الجيد.
للتجربة، قم بنقل/استنساخ الملف المُجمّع definitely_benign_package.tgz إلى /use_demonstration/ وقم بتثبيته باستخدام npm أو pnpm، يمكن اختصار ذلك باستخدام make pnpm/npm (يعمل make clean أيضًا بعد الانتهاء).
بمجرد تثبيته، قم بتشغيل برنامج كلمات التأكيد باستخدام node words_of_affirmation.js.