
विभिन्न पैकेज प्रबंधन प्रणालियों में डिपेंडेंसी कन्फ्यूजन कमजोरियों की जाँच करने का उपकरण
Python (pypi) requirements.txt, JavaScript (npm) package.json, PHP (composer) composer.json या MVN (maven) pom.xml में निर्भरता कॉन्फ़िगरेशन में संदर्भित निजी पैकेज नामों के लिए लंबित मुक्त नामस्थानों की जाँच करने का एक उपकरण।
9 फरवरी 2021 को, सुरक्षा शोधकर्ता एलेक्स बिरसन ने एक लेख प्रकाशित किया जिसमें कई प्रोग्रामिंग भाषा पारिस्थितिक तंत्रों में मौजूद निर्भरता प्रबंधन उपकरणों में विभिन्न रिज़ॉल्व ऑर्डर दोषों को छुआ गया।
माइक्रोसॉफ्ट ने प्रभाव को कम करने के तरीकों का वर्णन करते हुए एक श्वेतपत्र जारी किया, जबकि मूल कारण अभी भी बना हुआ है।
confused बस एक एप्लिकेशन की निर्भरता परिभाषा फ़ाइल को पढ़ता है और उस फ़ाइल में प्रत्येक निर्भरता प्रविष्टि के लिए सार्वजनिक पैकेज रिपॉजिटरी की जाँच करता है। यह उन सभी पैकेज नामों की रिपोर्ट करेगा जो सार्वजनिक रिपॉजिटरी में नहीं मिले हैं - एक ऐसी स्थिति जिसका अर्थ है कि एक पैकेज इस प्रकार के हमले के लिए असुरक्षित हो सकता है, जबकि इस वेक्टर का अभी तक शोषण नहीं किया गया है।
हालांकि, इसका मतलब यह नहीं है कि किसी एप्लिकेशन का पहले से ही सक्रिय रूप से शोषण नहीं किया जा रहा है। यदि आप जानते हैं कि आपका सॉफ्टवेयर निजी पैकेज रिपॉजिटरी का उपयोग कर रहा है, तो आपको यह सुनिश्चित करना चाहिए कि आपके निजी पैकेजों के लिए नामस्थानों पर किसी विश्वसनीय पक्ष (आमतौर पर आप या आपकी कंपनी) द्वारा दावा किया गया है।
npm जैसे कुछ पैकेजिंग पारिस्थितिक तंत्रों में "स्कोप" नामक एक अवधारणा है जो निजी या सार्वजनिक हो सकती है। संक्षेप में इसका मतलब एक नामस्थान है जिसका एक ऊपरी स्तर होता है - स्कोप। स्कोप स्वाभाविक रूप से सार्वजनिक रूप से दिखाई नहीं देते हैं, जिसका अर्थ है कि confused विश्वसनीय रूप से पता नहीं लगा सकता कि इस पर दावा किया गया है या नहीं। यदि आपका एप्लिकेशन स्कोप्ड पैकेज नामों का उपयोग करता है, तो आपको यह सुनिश्चित करना चाहिए कि किसी विश्वसनीय पक्ष ने सार्वजनिक रिपॉजिटरी में स्कोप नाम पर दावा किया है।
releases पेज से एक पूर्व-निर्मित बाइनरी डाउनलोड करें, अनपैक करें और चलाएँ!
या
यदि आपके पास हाल का go कंपाइलर स्थापित है: go get -u github.com/visma-prodsec/confused (अपडेट करने के लिए भी यही कमांड काम करता है)
या
git clone https://github.com/visma-prodsec/confused ; cd confused ; go get ; go build
Usage:
confused [-l LANGUAGENAME] depfilename.ext
Usage of confused:
-l string
Package repository system. Possible values: "pip", "npm", "composer", "mvn", "rubygems" (default "npm")
-s string
Comma-separated list of known-secure namespaces. Supports wildcards
-v Verbose output
./confused -l pip requirements.txt
Issues found, the following packages are not available in public package repositories:
[!] internal_package1
./confused -l npm package.json
Issues found, the following packages are not available in public package repositories:
[!] internal_package1
[!] @mycompany/internal_package1
[!] @mycompany/internal_package2
# Example when @mycompany private scope has been registered in npm, using -s
./confused -l npm -s '@mycompany/*' package.json
Issues found, the following packages are not available in public package repositories:
[!] internal_package1
./confused -l mvn pom.xml
Issues found, the following packages are not available in public package repositories:
[!] internal
[!] internal/package1
[!] internal/_package2
./confused -l rubygems Gemfile.lock
Issues found, the following packages are not available in public package repositories:
[!] internal
[!] internal/package1
[!] internal/_package2