
CVE-2023-37478 दिखाता है कि कैसे npm और pnpm इंस्टॉल पैकेजों में अंतर का फायदा उठाकर एक अच्छी तरह से तैयार किए गए tar.gz पैकेज के माध्यम से शोषण किया जा सकता है। यह रिपॉजिटरी एक डेमो प्रस्तुत करती है।
pnpm बनाम npm शोषणयह रिपॉजिटरी दर्शाता है कि कैसे npm और pnpm के टारबॉल से इंस्टॉलेशन में अंतर का शोषण किया जा सकता है।
इस शोषण को CVE-2023-37478 में दर्ज किया गया है।
यहां बनाया गया जावास्क्रिप्ट पैकेज दावा करता है कि यह उपयोगकर्ता को एक अच्छा संदेश प्रिंट करता है। जब npm के साथ इंस्टॉल किया जाता है, तो यह सच है।
हालांकि, उसी पैकेज को pnpm के साथ इंस्टॉल किया जा सकता है और यह एक अप्रिय संदेश प्रिंट करेगा।
कोई कल्पना कर सकता है कि इसका अधिक दुर्भावनापूर्ण तरीके से शोषण कैसे किया जा सकता है।
आप pnpm का एक पुराना, कमजोर संस्करण यहां पा सकते हैं जो इस शोषण के साथ काम करता है। यह pnpm के नए संस्करणों में ठीक किया गया है और सुधार यहां देखा जा सकता है
exploitative_package_src में पैकेज definitely_benign_package का स्रोत है।
फ़ोल्डर bad_version (V0.1) में दुर्भावनापूर्ण कोड है, और good_version (V0.2) में अच्छा कोड है।
make_tar.sh टार पैकेज इस प्रकार बनाता है कि अच्छे संस्करण से पहले बुरा संस्करण टारबॉल में जोड़ा जाता है।
एक डेमो के लिए, संकलित definitely_benign_package.tgz को /use_demonstration/ में ले जाएं/क्लोन करें और npm या pnpm के माध्यम से इंस्टॉल करें, इसे make pnpm/npm (make clean भी काम करता है जब आप समाप्त कर लें) के साथ शॉर्टकट किया जा सकता है।
एक बार इंस्टॉल हो जाने पर, node words_of_affirmation.js के साथ पुष्टि शब्दों की स्क्रिप्ट चलाएं।