Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
sloppy-joe — निर्भरताओं और कोड से आपूर्ति-श्रृंखला, स्लॉप्स्क्वाटिंग और टाइपोस्क्वाटिंग हमलों से बचाता है। | Kitploit
उपकरण/GitHubGitHub/brennhill/sloppy-joe
स्थैतिक विश्लेषणभेद्यता स्कैनरकोड विश्लेषणDevSecOpsसीक्रेट डिटेक्शनखतरा खुफियाआपूर्ति श्रृंखला सुरक्षालर्निंग और शिक्षा
GitHubbrennhill/sloppy-joe

sloppy-joe

निर्भरताओं और कोड से आपूर्ति-श्रृंखला, स्लॉप्स्क्वाटिंग और टाइपोस्क्वाटिंग हमलों से बचाता है।

रिपॉजिटरी देखें
32134 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

sloppy-joe

भ्रमित, टाइपोस्क्वैटेड और गैर-विहित निर्भरताओं को पकड़ें
इससे पहले कि वे उत्पादन तक पहुँचें।

cargo install sloppy-joe


LiteLLM आपूर्ति श्रृंखला हमला The LiteLLM supply chain attack (मार्च 2026) ने 97M मासिक डाउनलोड वाले एक पैकेज से समझौता किया। हमलावरों ने प्रकाशन क्रेडेंशियल चुराए, दुर्भावनापूर्ण संस्करण धकेले जिन्होंने SSH कुंजियाँ, क्लाउड क्रेडेंशियल और K8s रहस्य चुराए। sloppy-joe का डिफ़ॉल्ट 72-घंटे का संस्करण आयु गेट दोनों जहरीले संस्करणों को ब्लॉक कर देता — वे घंटों के भीतर खोजे गए, गेट खुलने से काफी पहले। यदि आप CI में sloppy-joe check चलाते हैं, तो यह हमला विफल हो जाता है। पूर्ण विश्लेषण

AI कोड जनरेटर पैकेज नामों का भ्रम पैदा करते हैं लगभग 20% समय। हमलावर उन नामों को पंजीकृत करते हैं और प्रतीक्षा करते हैं। sloppy-joe उन्हें CI में पकड़ता है, इससे पहले कि npm install या चले।

pip install

उपयोग कैसे करें```bash

Install (single static binary, no runtime dependencies)

cargo install sloppy-joe

Or download an auditable binary archive from GitHub Releases

https://github.com/brennhill/sloppy-joe/releases

Fast local guardrail — auto-detects ecosystem from manifest files

sloppy-joe check

Strict online scan (recommended before push / release)

sloppy-joe check --full

Strict CI-oriented scan

sloppy-joe check --ci

Check a specific directory

sloppy-joe check --dir ./my-project

Check only npm dependencies

sloppy-joe check --type npm

Check the Python runtime plus selected groups/extras

sloppy-joe check --python-groups dev,test --python-version 3.12 sloppy-joe check --python-extras docs --python-platform linux --python-version 3.12

Enforce canonical rules and org standards via config

sloppy-joe check --config /etc/sloppy-joe/config.json

Config from a URL (useful in CI — no secrets to manage)

sloppy-joe check --config https://raw.githubusercontent.com/yourorg/security-configs/main/sloppy-joe.json

JSON output for CI pipelines

sloppy-joe check --json

Review exact maintainer-change exceptions with evidence

sloppy-joe check --review-exceptions

Create and register a safe per-repo config outside the repo

sloppy-joe init --register

Create an ecosystem-specific greenfield starter policy

sloppy-joe init --greenfield --ecosystem npm

Print review-only bootstrap suggestions for an npm or Cargo repo

sloppy-joe init --from-current

Or write/register those suggestions safely outside the repo

sloppy-joe init --from-current --register

Or write a config manually to a secure path outside the repo

sloppy-joe init > /secure/location/sloppy-joe.json

root@kitploit:~
### Nix```bash
nix profile install github:brennhill/sloppy-joe

Scan modes:

  • sloppy-joe check तेज़ स्थानीय गार्डरेल चलाता है। यह हमेशा मेनिफ़ेस्ट पार्सिंग, लॉकफ़ाइल/सिंक, प्रोवेनेंस, और असमर्थित-स्रोत नीति लागू करता है। यदि निर्भरता या नीति की स्थिति बदल गई है, या पिछला सफल पूर्ण स्कैन 24 घंटे से पुराना है, तो यह sloppy-joe check --full की सिफारिश करता है।
  • sloppy-joe check --full सख्त ऑनलाइन स्कैन चलाता है और रिकॉर्ड किए गए सफल पूर्ण-स्कैन स्थिति को ताज़ा करता है।
  • sloppy-joe check --ci वही सख्त कवरेज चलाता है, CI-उन्मुख इरादे के साथ।
  • Python के लिए, sloppy-joe check डिफ़ॉल्ट रूप से runtime प्रोफ़ाइल का मूल्यांकन करता है। यदि स्कोप्ड निर्भरताएं मौजूद हैं, तो यह चेतावनी देता है और आपको CI/बिल्ड समानता के लिए स्पष्ट --python-groups, --python-extras, --python-platform, और/या --python-version फ़्लैग पास करने के लिए कहता है।
  • मानव-पठनीय सादा sloppy-joe check आउटपुट हमेशा आपको CI और उत्पादन गेटिंग के लिए --ci या --full का उपयोग करने की याद दिलाता है।

Exit codes: 0 = चयनित मोड में कोई अवरोधक समस्या नहीं मिली, 1 = अवरोधक समस्याएं मिलीं, 2 = रनटाइम त्रुटि।

Supports: JavaScript (npm, pnpm, Yarn, Bun), Python, Rust, Go, Ruby, PHP, JVM (Gradle/Maven), and .NET — मेनिफ़ेस्ट फ़ाइलों से स्वतः पहचाने जाते हैं।

Ecosystem guides: वर्तमान विश्वास मॉडल, समर्थित सुविधाओं और प्रत्येक इकोसिस्टम के लिए फेल-क्लोज़ सीमाओं के लिए docs/ecosystems/README.md देखें।

  • JavaScript
  • Python
  • Rust
  • Go
  • Ruby
  • PHP / Composer
  • JVM
  • .NET / NuGet
इकोसिस्टमआवश्यक मेनिफ़ेस्टविश्वसनीय लॉकफ़ाइल / प्रोजेक्ट स्थिति
JavaScript / npmpackage.jsonpackage-lock.json या npm-shrinkwrap.json; विरासत npm v1 डिफ़ॉल्ट रूप से अवरुद्ध
JavaScript / pnpmpackage.jsonpnpm-lock.yaml
JavaScript / Yarnpackage.jsonyarn.lock
JavaScript / Bunpackage.jsonbun.lock
Pythonpyproject.toml, requirements*.txt, Pipfile, setup.cfg, या setup.pyविश्वसनीय Poetry पथ poetry.lock का उपयोग करता है, विश्वसनीय uv पथ uv.lock का उपयोग करता है, और पूरी तरह हैश-लॉक किए गए pip-tools पर केवल तभी भरोसा किया जाता है जब कमिट किया गया आवश्यकताएँ ग्राफ --index-url और किसी भी --extra-index-url मान को बिल्कुल बांधता है; रेपो-दृश्यमान Python अनुक्रमणिकाओं को trusted_indexes.pypi के माध्यम से अनुमति सूची में जोड़ा जा सकता है; विश्वसनीय Python मोड एक समय में एक चयनित इंस्टॉल प्रोफ़ाइल का मूल्यांकन करते हैं (डिफ़ॉल्ट रूप से runtime, CLI के माध्यम से स्पष्ट groups/extras/platform/arch/version); विरासत मेनिफ़ेस्ट डिफ़ॉल्ट रूप से चेतावनियों के साथ अनुमत हैं
RustCargo.tomlCargo.lock
Gogo.modबाहरी निर्भरताओं के लिए go.sum आवश्यक
RubyGemfileGemfile.lock
PHP / Composercomposer.jsoncomposer.lock
JVM / Gradlebuild.gradle या build.gradle.ktsgradle.lockfile
JVM / Mavenpom.xmlकेवल-चेतावनी: अभी तक कोई विश्वसनीय प्रोजेक्ट-स्थानीय लॉकफ़ाइल पथ नहीं

Config sources: स्थानीय फ़ाइल पथ, HTTPS URL, या SLOPPY_JOE_CONFIG एनवी वैर। कॉन्फ़िग कभी भी प्रोजेक्ट निर्देशिका से नहीं पढ़ा जाता है (कारण के लिए CONFIG.md देखें)।

Onboarding: रेपो से मेल खाने वाले बूटस्ट्रैप मोड का उपयोग करें:

  • sloppy-joe init --greenfield --ecosystem <eco> एक नए प्रोजेक्ट के लिए इकोसिस्टम-विशिष्ट स्टार्टर नीति प्रिंट करता है। आज, ग्रीनफ़ील्ड प्रीसेट npm, pypi, और cargo के लिए लागू किए गए हैं; अन्य इकोसिस्टम "अभी तक समर्थित नहीं" त्रुटि के साथ विफल होते हैं। इसे रेपो के बाहर लिखने और सुरक्षित रूप से रजिस्टर करने के लिए --register जोड़ें।
  • sloppy-joe init --from-current वर्तमान रेपो का निरीक्षण करता है और केवल-समीक्षा बूटस्ट्रैप सुझाव प्रिंट करता है। आज, --from-current केवल उन रेपो के लिए लागू किया गया है जिनका प्रथम-पक्ष कोड npm और/या cargo है; अन्य इकोसिस्टम "अभी तक लागू नहीं किया गया" त्रुटि के साथ बंद होते हैं। उत्पन्न कॉन्फ़िग को लिखने और रजिस्टर करने के लिए --register जोड़ें।
  • बिना किसी मोड के sloppy-joe init एक तटस्थ मैन्युअल टेम्पलेट प्रिंट करता है।

sloppy-joe क्यों?

एकल बाइनरी। 8 इकोसिस्टम। 16 हमले के प्रकार। जनरेटिव जांच पर शून्य गलत सकारात्मक। ऐसा कॉन्फ़िग जिसे AI एजेंट छेड़छाड़ नहीं कर सकते।

अधिकांश निर्भरता सुरक्षा उपकरण एक या दो चीजों की जांच करते हैं — अस्तित्व, या संपादन दूरी। sloppy-joe एक ही पास में 16 हमले वैक्टर की जांच करता है: भ्रांतिपूर्ण पैकेज, टाइपोस्क्वाटिंग के 10 प्रकार (होमोग्लिफ़्स, स्कोप स्क्वाटिंग, दोहराए गए अक्षर, विभाजक भ्रम, शब्द पुनर्क्रमण, आसन्न स्वैप, छोड़े गए अक्षर, भ्रमित रूप, केस वेरिएंट, संस्करण प्रत्यय), कैननिकल प्रवर्तन, संस्करण आयु गेटिंग, इंस्टॉल स्क्रिप्ट प्रवर्धन, निर्भरता विस्फोट, अनुरक्षक परिवर्तन, और OSV.dev के माध्यम से ज्ञात कमजोरियां।

यह एक एकल Rust बाइनरी के रूप में चलता है जिसमें कोई रनटाइम निर्भरता नहीं है। यह सभी 8 प्रमुख पैकेज इकोसिस्टम का समर्थन करता है। और इसका कॉन्फ़िग सुरक्षा के लिए डिज़ाइन किया गया है: कभी भी प्रोजेक्ट निर्देशिका से नहीं पढ़ा जाता है, CI के लिए URL से लोड करने योग्य, जब कुछ गलत होता है तो स्पष्ट त्रुटि संदेशों के साथ।

sloppy-joeSocket.devGuardDogPhantom Guardantislopsquat
अस्तित्व जांच✅✅❌✅✅
समानता / टाइपोस्क्वाट✅✅✅✅❌
होमोग्लिफ़ पहचान✅❌❌❌❌
स्कोप स्क्वाटिंग✅❌❌❌❌
कैननिकल प्रवर्तन✅❌❌❌❌
संस्करण आयु गेट✅❌❌❌❌
इंस्टॉल स्क्रिप्ट प्रवर्धक✅✅❌❌❌
निर्भरता विस्फोट✅❌❌❌❌
अनुरक्षक परिवर्तन✅✅❌❌❌
OSV कमजोरी जांच✅✅❌❌❌
कॉन्फ़िग सुरक्षा (रेपो के बाहर)✅N/A❌❌❌
आंतरिक + अनुमत सूचियाँ

🔶 = बीटा/प्रायोगिक


प्रत्येक हमला कैसे काम करता है (और sloppy-joe इसे कैसे रोकता है)

1. भ्रांतिपूर्ण पैकेज

हमला: AI import ai_json_helper उत्पन्न करता है। पैकेज मौजूद नहीं है। एक हमलावर मैलवेयर के साथ PyPI पर ai-json-helper पंजीकृत करता है। अगली बार जब कोई pip install चलाता है, तो उन्हें दुर्भावनापूर्ण पैकेज मिलता है।

sloppy-joe इसे कैसे रोकता है: अस्तित्व जांच PyPI API को हिट करती है और 404 प्राप्त करती है। बिल्ड अवरुद्ध।``` ERROR ai-json-helper [existence] Package 'ai-json-helper' does not exist on the pypi registry. It may be hallucinated by an AI code generator. Fix: Remove 'ai-json-helper' from your dependencies.

root@kitploit:~
### 2. टाइपोस्क्वाटिंग (जनरेटिव जाँच + एडिट डिस्टेंस फ़ॉलबैक)

**हमला:** एक हमलावर npm पर `expresz` रजिस्टर करता है — `express` से एक अक्षर बदलकर। AI इसे जनरेट करता है, या कोई डेवलपर टाइप करने में गलती करता है। पैकेज मौजूद है, मौजूदगी की जाँच पास करता है, और मैलवेयर इंस्टॉल करता है।

**sloppy-joe इसे कैसे रोकता है:** sloppy-joe एडिट डिस्टेंस पर जाने से पहले 10 जनरेटिव जाँच चलाता है। प्रत्येक जनरेटिव जाँच डिपेंडेंसी नाम का एक विशिष्ट म्यूटेशन उत्पन्न करती है (अक्षर स्वैप करें, दोहराव को संक्षिप्त करें, प्रत्यय हटाएँ, शब्दों को पुनर्क्रमित करें, विभाजकों को सामान्य करें, होमोग्लिफ़ बदलें, स्कोप जाँचें) और ज्ञात लोकप्रिय पैकेजों के विरुद्ध सटीक मिलान का परीक्षण करती है। यह दृष्टिकोण, [रस्ट फाउंडेशन की टाइपोमैनिया](https://github.com/rustfoundation/typomania) लाइब्रेरी से प्रेरित है, जिसमें लगभग शून्य गलत-सकारात्मक परिणाम होते हैं क्योंकि यह म्यूटेशन के बाद केवल सटीक मिलान पर ही काम करता है।

लेवेनश्टाइन एडिट डिस्टेंस अंतिम सुरक्षा जाल के रूप में चलता है, उन नए म्यूटेशनों के लिए जिनकी किसी विशिष्ट जाँच ने कल्पना नहीं की थी। साथ में, वे ज्ञात हमले पैटर्न (सटीक रूप से) और अज्ञात पैटर्न (व्यापक रूप से) दोनों को कवर करते हैं।```
ERROR expresz [similarity/edit-distance]
      'expresz' is 1 character away from 'express'. This could be a typosquat.
 Fix: If you meant 'express', fix the name in your manifest.

3. दोहराए गए अक्षर

हमला: expresss (अतिरिक्त s) या reeact (अतिरिक्त e). ये सामान्य AI भ्रम पैटर्न हैं — मॉडल दोहराए गए अक्षरों वाले संभावित नाम उत्पन्न करता है।

sloppy-joe इसे कैसे रोकता है: दोहराए गए अक्षर की जाँच एक बार में एक डुप्लिकेट को हटाती है और जाँचती है कि परिणाम किसी ज्ञात पैकेज से मेल खाता है या नहीं। expresss → एक s हटाएँ → express → मिलान।``` ERROR expresss [similarity/repeated-chars] 'expresss' matches 'express' after removing a repeated character. Fix: Use 'express' — remove the repeated characters.

root@kitploit:~
### 4. विभाजक भ्रम

**हमला:** `python-dateutil` बनाम `python_dateutil` बनाम `pythondateutil`। कुछ रजिस्ट्रियों पर, ये अलग-अलग पैकेज होते हैं। हमलावर वेरिएंट को पंजीकृत करता है।

**sloppy-joe इसे कैसे रोकता है:** तुलना से पहले सभी विभाजकों (`-`, `_`, `.`) को सामान्य करता है। यदि सामान्यीकृत रूप किसी ज्ञात पैकेज से मेल खाता है, तो इसे चिह्नित किया जाता है।```
ERROR socket_io [similarity/separator-confusion]
      'socket_io' matches 'socket.io' after normalizing separators.
 Fix: Use the canonical name 'socket.io' with the correct separators.

5. शब्द पुनर्क्रमण

हमला: parse-json बनाम json-parse। Levenshtein दूरी 8 है — संपादन-दूरी जांचों के लिए अदृश्य। लेकिन एक हमलावर पुनर्क्रमित नाम को पंजीकृत कर सकता है।

sloppy-joe इसे कैसे रोकता है: विभाजकों पर विभाजित करता है, खंडों के सभी क्रमपरिवर्तन उत्पन्न करता है, और प्रत्येक को संग्रह के विरुद्ध जांचता है। parse-json → क्रमपरिवर्तन → json-parse → मिलान।``` ERROR parse-json [similarity/word-reorder] 'parse-json' is a reordering of 'json-parse'. Fix: Use 'json-parse' — the segments are in the wrong order.

root@kitploit:~
### 6. आसन्न अक्षर अदला-बदली

**हमला:** `request` के बजाय `reqeust`। दो आसन्न अक्षरों को आपस में बदलना — एक सामान्य टाइपो जिसका हमलावर शोषण करते हैं।

**sloppy-joe इसे कैसे रोकता है:** निर्भरता नाम के सभी आसन्न-अदला-बदली रूपांतर उत्पन्न करता है और प्रत्येक को कोष के विरुद्ध जांचता है।```
ERROR reqeusts [similarity/char-swap]
      'reqeusts' matches 'requests' with two adjacent characters swapped.
 Fix: Use 'requests' — two characters are transposed.

7. लुप्त अक्षर

हमला: reqests ( 'u' लुप्त) के बजाय requests। AI एक अक्षर छोड़ देता है और परिणाम एक वैध दिखने वाला नाम होता है।

sloppy-joe इसे कैसे रोकता है: नाम में हर स्थान पर हर a-z अक्षर डालता है और जाँचता है कि कोई परिणाम किसी ज्ञात पैकेज से मेल खाता है या नहीं। reqests + स्थान 3 पर u → requests → मेल।``` ERROR reqests [similarity/omitted-char] 'reqests' matches 'requests' with one character inserted. Fix: Use 'requests' — a character appears to be missing.

root@kitploit:~
### 8. होमोग्लिफ़ (दृश्य समानताएं)

**हमला:** `rеquests` जिसमें लैटिन `e` (U+0065) के बजाय सिरिलिक `е` (U+0435) है। देखने में समान। पैकेज का नाम बिल्कुल `requests` जैसा दिखता है लेकिन एक अलग, दुर्भावनापूर्ण पैकेज को संदर्भित करता है।

**sloppy-joe इसे कैसे रोकता है:** 17 ज्ञात होमोग्लिफ़ वर्णों (सिरिलिक, पूर्ण-चौड़ाई, स्क्रिप्ट वेरिएंट) को उनके लैटिन समकक्षों से बदलता है और जाँचता है कि परिणाम किसी ज्ञात पैकेज से मेल खाता है या नहीं।```
ERROR rеquests [similarity/homoglyph]
      'rеquests' contains characters that look identical to 'requests'
      but are different Unicode codepoints (homoglyphs).
 Fix: Replace the lookalike characters with standard ASCII.

9. इकोसिस्टम भ्रमित रूप

हमला: py-utils बनाम python-utils. PyPI पर, ये अलग-अलग पैकेज हैं। AI एक उत्पन्न करता है जब आप दूसरे का मतलब रखते हैं। इसी प्रकार, Go मॉड्यूल में github.com बनाम gitlab.com।

sloppy-joe इसे कैसे रोकता है: इकोसिस्टम-विशिष्ट प्रतिस्थापन नियम (PyPI के लिए py↔python, Go के लिए github↔gitlab) लागू करता है और जाँचता है कि क्या कोई भिन्नता किसी ज्ञात पैकेज से मेल खाती है।``` ERROR py-flask [similarity/confused-form] 'py-flask' is a confused form of 'flask'. Fix: Use the canonical name 'flask'.

root@kitploit:~
### 10. केस-वेरिएंट हमले (केस-संवेदनशील रजिस्ट्रियाँ)

**हमला:** Go, Maven और Ruby पर, `Rails` और `rails` अलग-अलग पैकेज हैं। एक हमलावर कैपिटलाइज़्ड वेरिएंट को पंजीकृत करता है।

**sloppy-joe इसे कैसे रोकता है:** केस-संवेदनशील रजिस्ट्रियों पर, किसी ज्ञात पैकेज का कोई भी केस वेरिएंट एक त्रुटि के रूप में चिह्नित किया जाता है। केस-असंवेदनशील रजिस्ट्रियों (npm, PyPI, Cargo, NuGet, PHP) पर, केस वेरिएंट सुरक्षित होते हैं और उन्हें छोड़ दिया जाता है।```
ERROR Rails [similarity/case-variant]
      'Rails' differs from 'rails' only in letter casing.
      On case-sensitive registries (ruby) these resolve to different packages.
 Fix: Use the exact casing 'rails' in your manifest.

11. संस्करण प्रत्यय स्क्वाटिंग

हमला: requests2 या lodash-4। AI पैकेज के नाम में संस्करण संख्या जोड़ देता है, जबकि उसे संस्करण को सही ढंग से निर्दिष्ट करना चाहिए।

sloppy-joe इसे कैसे रोकता है: अंत के अंकों और विभाजकों को हटाता है और जाँचता है कि आधार नाम किसी ज्ञात पैकेज से मेल खाता है या नहीं।``` ERROR requests2 [similarity/version-suffix] 'requests2' looks like 'requests' with a version suffix appended. Fix: Use 'requests' and specify the version in your manifest's version field.

root@kitploit:~
### 12. स्कोप स्क्वाटिंग (npm, PHP, Go, JVM)

**हमला:** एक हमलावर npm पर `@typos/lodash` पंजीकृत करता है — `@types/lodash` से एक अक्षर का अंतर। या Packagist पर `larvael/framework` — `laravel/framework` से दो अक्षर का अंतर। या Go पर `github.com/gooogle/protobuf` — एक अतिरिक्त `o`। स्कोप पहली नज़र में वैध लगता है। पैकेज रिज़ॉल्व हो जाता है। मैलवेयर इंस्टॉल हो जाता है।

यह दुर्लभ लेकिन संभावित है — और "दुर्लभ लेकिन संभावित" ठीक वही है जिसके लिए sloppy-joe मौजूद है। 2021 में `ua-parser-js` घटना स्कोप-संबंधित थी। यदि यह लाखों साप्ताहिक डाउनलोड वाले पैकेज के साथ हो सकता है, तो यह आपके साथ भी हो सकता है।

**sloppy-joe इसे कैसे रोकता है:** निर्भरता नाम से स्कोप/नेमस्पेस निकालता है और संपादन दूरी का उपयोग करके ज्ञात-अच्छे स्कोप की सूची से तुलना करता है। npm (`@scope`), PHP (`vendor/`), Go (`github.com/org`), और JVM (`com.group`) पर काम करता है।```
ERROR @typos/lodash [similarity/scope-squatting]
      Scope '@typos' is 1 character away from the known scope '@types'.
      Scope squatting is a known supply chain attack vector.
 Fix: If you meant '@types/lodash', fix the scope in your manifest.

2.5. प्रोसेसिंग फ्लो एक्सटेंशन

प्रोसेसिंग फ्लो एक्सटेंशन वेबसर्वर को अनुरोध भेजे जाने से पहले प्रसंस्करण संदर्भ को गतिशील रूप से विस्तारित करते हैं। यह प्रत्येक इंटरसेप्टेड अनुरोध पर लागू होता है।

दायरासंस्करणयूआई लेबल
अनुरोध2.1(निर्माण के लिए उपलब्ध नहीं है)

!!! info "बदला हुआ नाम (v. 2.2)" v. 2.2 से पहले Burp में, प्रोसेसिंग फ्लो एक्सटेंशन को सत्र हैंडलिंग एक्सटेंशन कहा जाता था।``` ERROR github.com/gooogle/protobuf [similarity/scope-squatting] Scope 'github.com/gooogle' is 1 character away from 'github.com/google'. Fix: If you meant 'github.com/google/protobuf', fix the org name.

root@kitploit:~
### 13. गैर-विहित पैकेज (हमला नहीं — एक संगति द्वार)

**हमला:** हमला नहीं — एक संगति समस्या। AI `moment` चुनता है क्योंकि यह प्रशिक्षण डेटा में लोकप्रिय था, लेकिन आपकी टीम `dayjs` का उपयोग करती है। एक ही काम के लिए अलग-अलग टीमों द्वारा विभिन्न पैकेजों का उपयोग करने से रखरखाव ऋण और निर्भरता ब्लोट उत्पन्न होता है।

**sloppy-joe इसे कैसे रोकता है:** आपका कॉन्फिग प्रत्येक विहित पैकेज को उसके अस्वीकृत विकल्पों से मैप करता है। यदि कोई निर्भरता किसी विकल्प से मेल खाती है, तो बिल्ड विफल हो जाता है।```
ERROR moment [canonical]
      'moment' is not the approved package for this purpose.
      Your team uses 'dayjs'.
 Fix: Replace 'moment' with 'dayjs' in your manifest file.

14. बहुत नए संस्करण (सप्लाई चेन टाइम बम)

हमला: एक हमलावर किसी पैकेज मेंटेनर के खाते से समझौता करता है (या मेंटेनर बदमाश हो जाता है) और एक दुर्भावनापूर्ण पैच संस्करण प्रकाशित करता है। यह एक सामान्य अपडेट जैसा दिखता है। यदि आपका CI इसे तुरंत इंस्टॉल करता है, तो आप किसी के नोटिस करने से पहले ही समझौता कर चुके होते हैं।

स्लॉपी-जो इसे कैसे रोकता है: संस्करण आयु गेट किसी भी निर्भरता को ब्लॉक करता है जिसका संस्करण min_version_age_hours (डिफ़ॉल्ट: 72 घंटे) से पहले प्रकाशित नहीं हुआ है। इससे समुदाय, Socket.dev और अन्य स्कैनर्स को दुर्भावनापूर्ण संस्करणों को फ़्लैग करने का समय मिल जाता है।``` ERROR react [metadata/version-age] Version '^19.0.0' of 'react' was published 6 hours ago (minimum: 72 hours). New versions need time for the community and security scanners to review them. Fix: Wait until the version is at least 72 hours old, or pin to an older version.

root@kitploit:~
### 15. बिल्कुल नए पैकेज

**हमला:** एक पैकेज जो कल बनाया गया है, जिसके 3 डाउनलोड हैं और जिसका नाम किसी लोकप्रिय पैकेज के समान है। इसके टाइपोस्क्वाट या भविष्य के हमले के लिए प्लेसहोल्डर होने की उच्च संभावना है।

**sloppy-joe इसे कैसे रोकता है:** 30 दिन से कम पहले बनाए गए किसी भी पैकेज को फ़्लैग करता है।```
ERROR sketchy-lib [metadata/new-package]
      'sketchy-lib' was first published 2 days ago.
      New packages are higher risk.
 Fix: Verify 'sketchy-lib' at its registry page and source repository.

16. कम डाउनलोड वाले पैकेज

हमला: 12 डाउनलोड वाला एक पैकेज जो requests से एक अक्षर दूर है। लगभग निश्चित रूप से टाइपोस्क्वाट।

sloppy-joe इसे कैसे रोकता है: उन पैकेजों को फ़्लैग करता है जिनके डाउनलोड 100 से कम हैं (जहाँ रजिस्ट्री डाउनलोड डेटा प्रदान करती है — वर्तमान में npm, crates.io, RubyGems)।``` ERROR requsets [metadata/low-downloads] 'requsets' has only 12 downloads. Fix: Verify 'requsets' is the package you intend to use.

root@kitploit:~
---

## समर्थित पारिस्थितिकी तंत्र

| पारिस्थितिकी तंत्र | मैनिफेस्ट | लॉकफ़ाइल नीति | अस्तित्व | मेटाडेटा | आयु प्रवेश |
|-----------|----------|-----------------|:---------:|:--------:|:--------:|
| npm | package.json | `package-lock.json` या `npm-shrinkwrap.json` आवश्यक | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| PyPI | `pyproject.toml`, `requirements*.txt`, `Pipfile`, `setup.cfg`, `setup.py` | Poetry को `poetry.lock` के साथ विश्वसनीय माना जाता है, uv को `uv.lock` के साथ विश्वसनीय माना जाता है, पूरी तरह हैश-लॉक किया गया pip-tools केवल तभी विश्वसनीय होता है जब प्रतिबद्ध निर्भरता ग्राफ `--index-url` और सटीक अनुमोदित `--extra-index-url` मानों को बाध्य करता है, और भंडार-दृश्यमान Poetry/uv कस्टम इंडेक्स केवल सटीक `trusted_indexes.pypi` अनुमति सूची द्वारा विश्वसनीय हो सकते हैं; विरासती मैनिफेस्ट प्रत्येक बार चेतावनी देते हैं जब तक `python_enforcement` `poetry_only` न हो | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| Cargo | Cargo.toml | `Cargo.lock` आवश्यक | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| Go | go.mod | बाहरी निर्भरता के लिए `go.sum` आवश्यक; केवल stdlib या सभी-स्थानीय `replace` के लिए आवश्यक नहीं | :white_check_mark: | :x: | :x: |
| Ruby | Gemfile | `Gemfile.lock` आवश्यक | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| PHP | composer.json | `composer.lock` आवश्यक | :white_check_mark: | :x: | :x: |
| JVM (Gradle) | build.gradle / build.gradle.kts | `gradle.lockfile` आवश्यक | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| JVM (Maven) | pom.xml | केवल चेतावनी: कोई सख्त लॉकफ़ाइल प्रवर्तन नहीं | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| .NET | *.csproj | `packages.lock.json` आवश्यक | :white_check_mark: | :x: | :x: |

सभी पारिस्थितिकी तंत्रों को अस्तित्व + समानता + प्रामाणिकता जांच प्राप्त होती है। मेटाडेटा और आयु प्रवेश रजिस्ट्री API द्वारा उजागर की गई चीज़ों पर निर्भर करता है। लॉकफ़ाइल समर्थन संक्रमणीय निर्भरता स्कैनिंग और सटीक संस्करण समाधान को सक्षम बनाता है, जहां पारिस्थितिकी तंत्र एक विश्वसनीय प्रोजेक्ट-स्थानीय लॉकफ़ाइल मॉडल प्रदान करता है।

## त्वरित आरंभ```bash
# Install
cargo install sloppy-joe

# Check current project (auto-detects ecosystem)
sloppy-joe check

# Check with canonical enforcement and age gate
sloppy-joe check --config /etc/sloppy-joe/config.json

# Output as JSON for CI
sloppy-joe check --json

बाहर निकलने के कोड

कोडअर्थ
0सभी जाँचें पास हुईं
1समस्याएँ पाई गईं
2रनटाइम त्रुटि

कॉन्फ़िग```json

{ "canonical": { "npm": { "lodash": ["underscore", "ramda", "lazy.js"], "dayjs": ["moment", "luxon"], "axios": ["request", "got", "node-fetch", "superagent"] }, "pypi": { "httpx": ["urllib3", "requests"], "ruff": ["flake8", "pylint"] } }, "internal": { "go": ["github.com/yourorg/"], "npm": ["@yourorg/"] }, "allowed": { "npm": ["some-vetted-external-pkg"] }, "similarity_exceptions": { "cargo": [ { "package": "serde_json", "candidate": "serde", "generator": "segment-overlap" } ] }, "metadata_exceptions": { "cargo": [ { "package": "colored", "check": "metadata/maintainer-change", "version": "2.2.0", "previous_publisher": "kurtlawrence", "current_publisher": "hwittenborn" } ] }, "min_version_age_hours": 72, "allow_legacy_npm_v1_lockfile": false, "python_enforcement": "prefer_poetry" }

root@kitploit:~
**`canonical`** — कुंजियाँ अनुमोदित पैकेज हैं; मान अस्वीकृत विकल्प हैं।

**`internal`** — आपके संगठन के पैकेज। सभी जाँचों को छोड़ें। ये लगातार बदलते रहते हैं।

**`allowed`** — जाँचे गए बाहरी पैकेज। अस्तित्व + समानता छोड़ें, लेकिन फिर भी संस्करण आयु द्वार के अधीन।

**`similarity_exceptions`** — समीक्षित समानता झूठी सकारात्मकताओं के लिए सटीक पैकेज/उम्मीदवार/जनरेटर दमन। इसका उपयोग करें जब एक विशिष्ट समानता किनारा गलत हो लेकिन आप अभी भी पैकेज पर सामान्य जाँच चाहते हों।

**`metadata_exceptions`** — सटीक समीक्षित मेटाडेटा दमन। वर्तमान में यह केवल `metadata/maintainer-change` का समर्थन करता है, और इसके लिए सटीक पैकेज/संस्करण/पिछला-प्रकाशक/वर्तमान-प्रकाशक मिलान आवश्यक है।

जब आपको रखरखाव-परिवर्तन अवरोधों की समीक्षा करने की आवश्यकता हो तो `sloppy-joe check --review-exceptions` का उपयोग करें। स्कैन सामान्य रूप से अवरुद्ध करता रहता है, लेकिन मानव आउटपुट में मालिकों, रिपॉजिटरी URL और पेस्ट करने के लिए तैयार `metadata_exceptions` स्निपेट के साथ एक `REVIEW EXCEPTIONS` अनुभाग जोड़ता है। `--json` शीर्ष-स्तरीय `review_candidates` फ़ील्ड में समान डेटा शामिल करता है।

**`min_version_age_hours`** — इससे कम घंटे पहले प्रकाशित किसी भी संस्करण को अवरुद्ध करें। डिफ़ॉल्ट: 72 (3 दिन)। अक्षम करने के लिए 0 पर सेट करें। आंतरिक पैकेज छूट प्राप्त हैं।

**`allow_legacy_npm_v1_lockfile`** — `lockfileVersion: 1` npm v5/v6 से npm lockfiles को कम-विश्वास मोड में अनुमति दें। डिफ़ॉल्ट: `false`। इसे बंद रखें जब तक कि आप जानबूझकर विरासत npm पर अटके न हों और तेज़ चेतावनियों के साथ-साथ कम विश्वास वाले npm ट्रांज़िटिव कवरेज को स्वीकार करते हों।

**`python_enforcement`** — Python विश्वास नीति को नियंत्रित करता है। `prefer_poetry` (डिफ़ॉल्ट) Poetry परियोजनाओं और uv परियोजनाओं पर भरोसा करता है, पूरी तरह से हैश-लॉक किए गए pip-tools आवश्यकताओं पर तभी भरोसा करता है जब प्रतिबद्ध आवश्यकताओं का ग्राफ `--index-url` और किसी भी गैर-PyPI `--extra-index-url` मानों को बिल्कुल बांधता है, और अन्यथा pip-tools को कम-विश्वास में डाउनग्रेड करता है। विरासत मेनिफेस्ट जैसे अनहैश किए गए `requirements*.txt`, `Pipfile`, `setup.cfg`, `setup.py`, और गैर-Poetry/गैर-uv `pyproject.toml` हर बार चलने पर चेतावनी देते हैं। `poetry_only` उन गैर-Poetry Python वर्कफ़्लो को अवरुद्ध करता है और Poetry की आवश्यकता है।

### Config Security

कॉन्फ़िग **कभी भी प्रोजेक्ट निर्देशिका से नहीं पढ़ा जाता**। शेल एक्सेस वाला एक AI एजेंट इन-रेपो कॉन्फ़िग को फिर से लिखकर जो चाहे अनुमति सूची में डाल सकता है।

Config resolution:
1. `--config /path/to/config.json` — स्थानीय फ़ाइल (CLI ध्वज, उच्चतम प्राथमिकता)
2. `--config https://example.com/config.json` — URL से लाएं
3. `SLOPPY_JOE_CONFIG=...` — env var (फ़ाइल पथ या URL)
4. कोई कॉन्फ़िग नहीं = केवल अस्तित्व + समानता + मेटाडेटा जाँचें

गलत कॉन्फ़िग **कठोरता से विफल** होते हैं और कार्रवाई योग्य त्रुटि संदेश देते हैं — एक टूटा हुआ कॉन्फ़िग कभी भी चुपचाप बिना सुरक्षा के वापस नहीं आता।

पूर्ण प्रारूप संदर्भ, CI एकीकरण पैटर्न और उदाहरणों के लिए [CONFIG.md](https://github.com/brennhill/sloppy-joe/blob/main/CONFIG.md) देखें।

Bootstrap config:```bash
sloppy-joe init --greenfield --ecosystem npm
sloppy-joe init --from-current
sloppy-joe init --from-current --register
sloppy-joe init --register

CI एकीकरण

GitHub Actions

अपने CI पाइपलाइन में sloppy-joe जोड़ने का सबसे तेज़ तरीका — GitHub Releases से पूर्व-निर्मित बाइनरी डाउनलोड करता है (कोई Rust टूलचेन की आवश्यकता नहीं):```yaml

.github/workflows/deps.yml

name: Dependency Check on: [push, pull_request]

jobs: sloppy-joe: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: brennhill/[email protected] with: config: https://raw.githubusercontent.com/yourorg/configs/main/sloppy-joe.json

root@kitploit:~
#### कार्रवाई इनपुट

| Input | Description | Default |
|-------|-------------|---------|
| `config` | कॉन्फ़िग फ़ाइल पथ या HTTPS URL | *(कोई नहीं)* |
| `dir` | स्कैन करने के लिए प्रोजेक्ट निर्देशिका | `.` |
| `type` | इकोसिस्टम (`npm`, `pypi`, `cargo`, `go`, `ruby`, `php`, `jvm`, `dotnet`) | auto-detect |
| `deep` | ट्रांज़िटिव डिप समानता जाँच सक्षम करें | `false` |
| `paranoid` | बिटफ्लिप म्यूटेशन सक्षम करें | `false` |
| `args` | अतिरिक्त CLI तर्क | *(कोई नहीं)* |
| `version` | इंस्टॉल करने के लिए sloppy-joe संस्करण | `latest` |

#### उदाहरण```yaml
# Minimal — CI-oriented scan, auto-detect ecosystem, no config
- uses: brennhill/[email protected]

# With org config from a URL
- uses: brennhill/[email protected]
  with:
    config: https://raw.githubusercontent.com/yourorg/configs/main/sloppy-joe.json

# Deep scan with paranoid mode
- uses: brennhill/[email protected]
  with:
    config: ${{ secrets.SLOPPY_JOE_CONFIG }}
    deep: true
    paranoid: true

# Scan a subdirectory, pin to a specific version
- uses: brennhill/[email protected]
  with:
    dir: ./packages/api
    version: '1.1.0'

GitLab CI```yaml

dependency-guard: script: - cargo install sloppy-joe - sloppy-joe check --ci --config $SLOPPY_JOE_CONFIG

root@kitploit:~
### pre-commit

sloppy-joe [pre-commit](https://pre-commit.com) फ्रेमवर्क के साथ काम करता है।
इसे अपनी `.pre-commit-config.yaml` फ़ाइल में जोड़ें:```yaml
# .pre-commit-config.yaml
repos:
  - repo: https://github.com/brennhill/sloppy-joe
    rev: v1.1.0
    hooks:
      - id: sloppy-joe

हुक हर कमिट (और वैकल्पिक रूप से पुश पर) पर sloppy-joe check चलाता है। यह मेनिफेस्ट फाइलों से आपके इकोसिस्टम का स्वतः पता लगाता है। args के माध्यम से अतिरिक्त तर्क पास करें:```yaml - id: sloppy-joe args: [--config, "https://example.com/config.json"]

root@kitploit:~
या फ्रेमवर्क के बिना एक सरल शेल हुक का उपयोग करें:```bash
#!/bin/sh
sloppy-joe check || exit 1

आर्किटेक्चर

sloppy-joe एक रजिस्ट्री-आधारित जनरेटिव दृष्टिकोण का उपयोग करता है समानता पहचान के लिए। प्रत्येक निर्भरता की तुलना स्थिर कोष से edit distance के साथ करने (जो गलत सकारात्मक परिणाम उत्पन्न करता है) के बजाय, यह प्रत्येक निर्भरता नाम के विशिष्ट उत्परिवर्तन उत्पन्न करता है, रजिस्ट्री से पूछताछ करता है कि उत्परिवर्तन मौजूद है या नहीं, और सटीक मिलान को चिह्नित करता है।``` Pipeline (in order):

  1. Canonical check — flag deps that violate org standards
  2. Similarity check — 8 mutation generators + scope squatting
  3. Metadata check — version age, new package, downloads, install scripts, dep explosion, maintainer change
  4. Existence check — flag packages that don't exist on the registry
  5. Malicious check — query OSV.dev for known vulnerabilities
root@kitploit:~
समानता 4 चरणों में चलती है:
- **चरण 0: स्कोप स्क्वॉटिंग** — स्थानीय जाँच, कोई नेटवर्क नहीं। लेवेनश्टाइन दूरी के माध्यम से स्कोप/नेमस्पेस की तुलना ज्ञात-अच्छे स्कोप से करता है।
- **चरण 1: इंट्रा-मैनिफेस्ट** — स्थानीय जाँच। जब एक ही मैनिफेस्ट में दो निर्भरताएँ एक-दूसरे के उत्परिवर्तन (म्यूटेशन) हों, तब फ़्लैग करता है।
- **चरण 2: रजिस्ट्री क्वेरी** — उत्परिवर्तन उत्पन्न करता है, अस्तित्व के लिए रजिस्ट्री को बैच-क्वेरी करता है, परिणाम कैश करता है (7-दिन TTL)।
- **चरण 3: मेटाडेटा संवर्धन** — मेल खाने वालों के लिए डाउनलोड गणना और प्रकाशन तिथियाँ प्राप्त करता है, ताकि रिपोर्ट में साक्ष्य जोड़ा जा सके।

प्रत्येक उत्परिवर्तन जनरेटर अपने आउटपुट को टैग करता है, जिससे रिपोर्ट की गई जाँच प्रकार (जैसे, `similarity/homoglyph`) नियतात्मक होता है — जब कई जनरेटर समान उम्मीदवार उत्पन्न करते हैं तो सबसे उच्च-गंभीरता वाला जनरेटर जीतता है।

## CI विश्वसनीयता

sloppy-joe को CI पाइपलाइनों के लिए डिज़ाइन किया गया है जहाँ चंचल विफलताएँ अस्वीकार्य हैं।

**बैकऑफ़ के साथ पुनः प्रयास।** सभी रजिस्ट्री HTTP कॉल अस्थायी विफलताओं (5xx, टाइमआउट, कनेक्शन त्रुटियाँ) पर एक्सपोनेन्शियल बैकऑफ़ (200ms, 400ms, 800ms) के साथ 3 बार पुनः प्रयास करते हैं। एक एकल नेटवर्क ब्लिप आपके बिल्ड को विफल नहीं करेगा।

**क्वेरी त्रुटियों पर फ़ेल-क्लोज़।** यदि रजिस्ट्री या OSV क्वेरी विफल होती हैं, तो sloppy-joe चुपचाप जाँच छोड़ने के बजाय एक ब्लॉकिंग `registry-unreachable` त्रुटि उत्सर्जित करता है। स्कैन अब ब्लॉक करने से पहले प्रति-इकोसिस्टम थ्रेशोल्ड या नमूना-आकार कटऑफ़ पर निर्भर नहीं करता है।

**समानता कैश।** उत्परिवर्तन अस्तित्व के परिणाम 7 दिनों के लिए कैश किए जाते हैं। पहले स्कैन के बाद, अधिकांश क्वेरी शून्य नेटवर्क कॉल के साथ कैश से प्रस्तुत की जाती हैं। केवल नई निर्भरताएँ रजिस्ट्री क्वेरी को ट्रिगर करती हैं।

**लॉकफ़ाइल-जागरूक समाधान।** जब एक समर्थित लॉकफ़ाइल मौजूद हो और विश्वसनीय हो (`package-lock.json`, `npm-shrinkwrap.json`, `Cargo.lock`, `Gemfile.lock`, `poetry.lock` (Poetry परियोजनाओं के लिए), `uv.lock` (uv परियोजनाओं के लिए), `composer.lock`, `gradle.lockfile`, `packages.lock.json`), तो sloppy-joe श्रेणियों से अनुमान लगाने के बजाय इससे सटीक संस्करण हल करता है। पूर्णतः हैश-लॉक्ड `requirements*.txt` भी सटीक पिन किए गए संस्करण प्रदान कर सकते हैं, और वे पूरी तरह से विश्वसनीय हो जाते हैं जब प्रतिबद्ध आवश्यकताएँ (requirements ग्राफ) अपने स्वयं के `--index-url` और सटीक अनुमत `--extra-index-url` मान बाँधता है।

## परीक्षण

परीक्षण सूट में समानता जाँच, मेटाडेटा संकेत, OSV व्यवहार, कॉन्फ़िगरेशन पार्सिंग और सत्यापन, लॉकफ़ाइल समाधान, मैनिफेस्ट और लॉकफ़ाइल प्रीफ़्लाइट नीति, रिपोर्ट फ़ॉर्मेटिंग, और HTTP पुनः प्रयास तर्क शामिल हैं।```bash
cargo test

आधारित

  • Typomania — Rust Foundation की typosquatting लाइब्रेरी, जिसने generative mutation दृष्टिकोण को प्रेरित किया (sloppy-joe सीधे crate का उपयोग करने के बजाय अपने स्वयं के जनरेटर को लागू करता है)
  • strsim — Levenshtein दूरी, स्कोप स्क्वॉटिंग का पता लगाने के लिए उपयोग किया जाता है
  • reqwest — रजिस्ट्री क्वेरीज़ के लिए रिट्राई के साथ एसिंक्रोनस HTTP क्लाइंट
  • OSV.dev — दुर्भावनापूर्ण पैकेज का पता लगाने के लिए ज्ञात भेद्यता डेटाबेस

sloppy-joe की तुलना

सुविधाsloppy-joeSocket.devcargo-denypip-auditnpm audit
भ्रामक पैकेज का पता लगाना✅❌❌❌❌
टाइपोस्क्वॉटिंग का पता लगाना✅ 11 जनरेटरआंशिक❌❌❌
प्रामाणिक नाम प्रवर्तन✅❌❌❌❌
ज्ञात भेद्यता स्कैनिंग✅ OSV के माध्यम से✅✅✅✅
इंस्टॉल स्क्रिप्ट विश्लेषणबुनियादी (फ़्लैग + कोई रिपॉजिटरी नहीं)✅ गहन विश्लेषण❌❌❌
लाइसेंस अनुपालनOOS: अनुपालन, सुरक्षा नहीं✅✅ उत्कृष्टOOS: अनुपालन, सुरक्षा नहींOOS: अनुपालन, सुरक्षा नहीं
बहु-पारिस्थितिकी तंत्र8 पारिस्थितिकी तंत्रnpm, PyPI, Go, Ruby, Java, .NETकेवल Rustकेवल Pythonकेवल npm
AI एजेंट सुरक्षा (रिपॉजिटरी के बाहर कॉन्फ़िग)✅❌❌❌❌
ऑफ़लाइन/CI अनुकूल✅ कहीं भी चलता हैSocket प्लेटफ़ॉर्म की आवश्यकता है✅✅✅
मुफ़्त / ओपन सोर्सApache 2.0मुफ़्त स्तर + भुगतानApache 2.0Apache 2.0अंतर्निहित

जहाँ अन्य मजबूत हैं: Socket.dev गहन इंस्टॉल स्क्रिप्ट विश्लेषण करता है जिसमें व्यवहारिक पहचान होती है, जो sloppy-joe के फ़्लैग-आधारित दृष्टिकोण से कहीं आगे है। cargo-deny के पास सर्वश्रेष्ठ लाइसेंस अनुपालन जाँच है, लेकिन यह जानबूझकर sloppy-joe के दायरे से बाहर है क्योंकि लाइसेंस नीति एक अनुपालन समस्या है न कि निर्भरता सुरक्षा नियंत्रण। npm audit और pip-audit एकल-पारिस्थितिकी तंत्र भेद्यता स्कैनिंग के लिए शून्य-इंस्टॉल विकल्प हैं।

जहाँ sloppy-joe अलग है: यह एकमात्र उपकरण है जो पुष्टि करता है कि पैकेज वास्तव में रजिस्ट्रीज़ पर मौजूद हैं (AI भ्रांतियों को पकड़ता है), लगभग शून्य गलत सकारात्मक के साथ 11 typosquatting जनरेटर चलाता है, प्रामाणिक पैकेज विकल्पों को लागू करता है, और अपना कॉन्फ़िगरेशन रिपॉजिटरी के बाहर रखता है ताकि AI एजेंट अपनी स्वयं की जाँच को कमज़ोर न कर सकें।

लाइसेंस

Apache 2.0

टूल डाउनलोड करें
.NET / NuGet
.csproj
packages.lock.json
✅
❌
❌
❌
❌
npm✅✅✅✅❌
PyPI✅✅✅✅✅
Cargo✅✅❌✅❌
Go✅✅✅❌❌
Ruby✅✅✅❌❌
PHP✅🔶❌❌❌
JVM (Gradle/Maven)✅✅❌❌❌
.NET (NuGet)✅✅❌❌❌
एकल बाइनरी✅❌❌❌❌
ओपन सोर्सApache 2.0CommercialApache 2.0MITOSS
भाषाRustSaaSPythonPythonPython