
स्टैटिक और डायनेमिक विश्लेषण उपकरण जो ओपन-सोर्स पैकेजों में दुर्भावनापूर्ण, संवेदनशील और जोखिमपूर्ण गुणों की जाँच करता है, सैंडबॉक्सित इंस्टॉलेशन के साथ आपूर्ति-श्रृंखला हमलों को रोकता है।
Packj (उच्चारित 'पैकेज') एक उपकरण है जो सॉफ़्टवेयर आपूर्ति श्रृंखला हमलों को कम करने में मदद करता है। यह लोकप्रिय ओपन-सोर्स पैकेज रजिस्ट्रियों जैसे NPM, RubyGems और PyPI से दुर्भावनापूर्ण, कमजोर, परित्यक्त, टाइपो-स्क्वाटिंग और अन्य 'जोखिमपूर्ण' पैकेजों का पता लगा सकता है। इसे शोर कम करने के लिए आसानी से अनुकूलित किया जा सकता है। Packj एक पीएचडी शोध परियोजना के रूप में शुरू हुआ और वर्तमान में विभिन्न सरकारी अनुदानों के तहत विकसित किया जा रहा है।
नोट स्व-होस्टेड Packj वेबसर्वर और कई एकीकरण इस महीने के अंत में आ रहे हैं 👊 अपडेट रहने के लिए इस रेपो को देखें।

हम कई डिप्लॉयमेंट मॉडल का समर्थन करते हैं:
Pull requests में निर्भरताओं की ऑडिट करने के लिए Packj का उपयोग करें।```yaml
View on GitHub [marketplace](https://github.com/marketplace/actions/packj-security-audit). Example [PR run](https://github.com/ossillate-inc/packj-github-action-demo/pull/3#issuecomment-1274797138).
### 2. डॉकर इमेज (अनुशंसित)
Packj को आज़माने/परीक्षण करने का सबसे तेज़ तरीका Docker का उपयोग करना है। कंटेनरीकृत (पृथक) रन के लिए Podman भी समर्थित है।```
docker run -v /tmp:/tmp/packj -it ossillate/packj:latest --help
इस रिपॉजिटरी को क्लोन करें,``` git clone https://github.com/ossillate-inc/packj.git && cd packj
निर्भरताएँ स्थापित करें```
bundle install && pip3 install -r requirements.txt
सहायता से शुरू करें:``` python3 main.py --help
# समर्थित पारिस्थितिकी तंत्र #
Packj, NPM, PyPI, Rust, PHP, और Rubygems पैकेज रजिस्ट्रियों से प्रकाशित पैकेजों की जांच कर सकता है। Rust और PHP का समर्थन कार्य प्रगति पर है। हम सक्रिय रूप से रजिस्ट्रियों के लिए समर्थन जोड़ रहे हैं।
यह स्थानीय (अप्रकाशित) NPM और PyPI पैकेजों की जांच का भी समर्थन करता है।
| रजिस्ट्री | पारिस्थितिकी तंत्र | समर्थित |
| --------- | ---------- | ------------------ |
| NPM | JavaScript | :white_check_mark: |
| PyPI | Python | :white_check_mark: |
| Cargo | Rust | :white_check_mark: |
| Rubygems | Ruby | :white_check_mark: |
| Packagist | PHP | :white_check_mark: |
| Docker | Docker | :x: |
| Nuget | .NET | :white_check_mark: |
| Maven | Java | :white_check_mark: |
| Cocoapods | Swift | :x: |
# कार्यक्षमता #
Packj निम्नलिखित उपकरण प्रदान करता है:
* [ऑडिट](#auditing-a-package) - एक पैकेज को "जोखिमपूर्ण" विशेषताओं के लिए जांचना।
* [सैंडबॉक्स](#sandboxed-package-installation) - एक पैकेज की सुरक्षित स्थापना के लिए।
## एक पैकेज का ऑडिट करना ##
Packj ओपन-सोर्स सॉफ्टवेयर पैकेजों की "जोखिमपूर्ण" विशेषताओं के लिए ऑडिट करता है जो उन्हें आपूर्ति श्रृंखला हमलों के प्रति संवेदनशील बनाती हैं। उदाहरण के लिए, समाप्त ईमेल डोमेन (2FA की कमी), बड़े रिलीज़ समय अंतराल, संवेदनशील API या एक्सेस अनुमतियाँ आदि वाले पैकेज को जोखिमपूर्ण के रूप में चिह्नित किया जाता है।
निम्नलिखित का ऑडिट करना समर्थित है:
- एकाधिक पैकेज: `python3 main.py audit -p pypi:requests rubygems:overcommit`
- निर्भरता फ़ाइलें: `python3 main.py audit -f npm:package.json pypi:requirements.txt`
डिफ़ॉल्ट रूप से, `audit` केवल जोखिमपूर्ण कोड का पता लगाने के लिए स्थैतिक कोड विश्लेषण करता है। आप डायनामिक कोड विश्लेषण भी करने के लिए `-t` या `--trace` फ़्लैग पास कर सकते हैं, जो सभी अनुरोधित पैकेजों को strace के अंतर्गत स्थापित करेगा और पैकेजों के स्थापना-समय व्यवहार की निगरानी करेगा। कृपया नीचे उदाहरण आउटपुट देखें।
<details>
<summary><h4>उदाहरण रन/आउटपुट दिखाएं</h4></summary>
$ docker run -v /tmp:/tmp/packj -it ossillate/packj:latest audit --trace -p npm:browserify