- यह पुष्टि हुई है कि NPM repository में credentials चुराने के लिए 100 से अधिक malicious packages अगस्त के बाद बिना detect हुए upload किए गए और उन्हें कुल 86,000 से अधिक बार डाउनलोड किया गया
- security company Koi ने रिपोर्ट किया कि 'PhantomRaven' नाम का attack campaign, NPM के Remote Dynamic Dependencies(RDD) feature का दुरुपयोग करके 126 malicious packages फैलाने में इस्तेमाल किया गया
- RDD ऐसी संरचना है जो package को untrusted domains से dependency code dynamically डाउनलोड करने देती है, इसलिए इसे static analysis tools detect नहीं कर पाते
- attackers ने इस feature का उपयोग HTTP connection के जरिए malicious code डाउनलोड करने के लिए किया, लेकिन package metadata में यह “0 Dependencies” के रूप में दिखा, जिससे developers और security scanners इसे पहचान नहीं पाए
- यह structural weakness NPM ecosystem की security management limits और automatic installation mechanism के जोखिम को उजागर करती है
NPM repository में malicious packages का प्रसार
- attackers ने NPM code repository की structural weakness का फायदा उठाकर अगस्त के बाद credentials चुराने वाले 100 से अधिक packages upload किए
- अधिकांश packages बिना detect हुए वितरित हुए, और इनका cumulative download count 86,000 से अधिक रहा
- security company Koi ने इस attack को PhantomRaven campaign नाम दिया और विश्लेषण किया कि NPM के एक specific feature का दुरुपयोग किया गया
- Koi के अनुसार, 126 malicious packages में से लगभग 80 article लिखे जाने के समय तक भी NPM पर मौजूद थे
Remote Dynamic Dependencies(RDD) की कमजोर संरचना
- RDD एक ऐसा feature है जो package को external website से dependency code dynamically डाउनलोड करने की अनुमति देता है
- आम तौर पर dependencies, NPM की trusted infrastructure से डाउनलोड होती हैं, लेकिन RDD HTTP जैसे unencrypted connections के जरिए डाउनलोड की भी अनुमति देता है
- PhantomRaven attackers ने इस feature का उपयोग code को malicious URL (उदाहरण:
http://packages.storeartifact.com/npm/unused-imports) से डाउनलोड कराने के लिए configure किया
- ऐसी dependencies developers और security scanners को दिखाई नहीं देतीं, और package information में “0 Dependencies” के रूप में दिखती हैं
- NPM के automatic installation feature के कारण ऐसे 'अदृश्य' dependency code अपने आप execute हो जाते हैं
security tools की detection limitations
- Koi के Oren Yomtov ने कहा, “PhantomRaven मौजूदा security tools के blind spot का बेहद परिष्कृत तरीके से दुरुपयोग करने का उदाहरण है”
- RDD को static analysis tools detect नहीं कर पाते
- इसके कारण attackers security validation को bypass करते हुए malicious code वितरित कर सके
अतिरिक्त कमजोर कारक
- Koi ने बताया कि RDD से डाउनलोड की गई dependencies हर installation पर attacker server से दोबारा डाउनलोड होती हैं
- cache या version management न होने के कारण, एक ही package में भी installation के समय के अनुसार अलग malicious code inject होने की संभावना रहती है
- ऐसी dynamic download संरचना package integrity verification को कठिन बनाती है
NPM की संरचना और पृष्ठभूमि
- NPM JavaScript के लिए package manager है, जिसे GitHub की subsidiary npm, Inc. manage करती है
- यह Node.js का default package manager है और command-line client तथा npm registry से मिलकर बना है
- registry में public और paid private packages store होते हैं, और website के जरिए उन्हें खोजा जा सकता है
- इस घटना को ऐसे उदाहरण के रूप में देखा जा रहा है जो दिखाती है कि NPM की automatic dependency management संरचना हमलों में दुरुपयोग की जा सकती है
अन्य उल्लेख
- लेख के अंत में अनावश्यक JavaScript execution को block करने की आवश्यकता का उल्लेख है
- हालांकि, यह भी रेखांकित किया गया कि इस बार ज़रूरी JavaScript code तक का दुरुपयोग किया गया
अभी कोई टिप्पणी नहीं है.