
vet v1.19.0
दुर्भावनापूर्ण ओपन सोर्स पैकेजों से सुरक्षा करें 🤖
प्रोडक्शन तक पहुँचने से पहले दुर्भावनापूर्ण पैकेज, कमज़ोरियाँ और जोखिम भरे CI वर्कफ़्लो खोजें।
[!NOTE] यह ब्रांच vet v2 है, जो अल्फा में है। vet v1
mainपर है और नवीनतम रिलीज़ बना हुआ है। v2.0.0 रिलीज़ नोट्स में प्रत्येक v1 कमांड और फ़्लैग को v2 से मैप किया गया है।
vet क्यों
आपकी डिपेंडेंसियाँ, आपके GitHub Actions वर्कफ़्लो और आपके AI एजेंट कॉन्फ़िग ऐसा कोड चलाते हैं जो आपने नहीं लिखा। vet उनमें जोखिम खोजता है।
- दुर्भावनापूर्ण पैकेज। vet प्रत्येक पैकेज को SafeDep Threat Intel के विरुद्ध जाँचता है। Threat Intel नए पैकेज संस्करणों का विश्लेषण तब करता है जब रजिस्ट्रियाँ उन्हें प्रकाशित करती हैं।
- ज्ञात कमज़ोरियाँ, साथ में अपग्रेड करने के लिए फ़िक्स्ड संस्करण।
- जोखिम भरे वर्कफ़्लो। खतरनाक ट्रिगर, टेम्पलेट इंजेक्शन, उजागर सीक्रेट्स और बिना पिन किए गए कमिट SHA वाले एक्शन।
- लॉकफ़ाइल छेड़छाड़ और नए संस्करण। अविश्वसनीय रजिस्ट्री से प्रविष्टियाँ, और कूलडाउन विंडो के भीतर के संस्करण।
- पॉलिसी एज़ कोड। CEL में नियम तय करते हैं कि स्कैन कब विफल हो। आप सहेजे गए स्कैन पर नियम का परीक्षण कर सकते हैं।
- AI और क्रिप्टो इन्वेंटरी। vet उन AI लाइब्रेरीज़ और क्रिप्टो एल्गोरिदम की सूची बनाता है जिन्हें आपका कोड कॉल करता है, और एक CycloneDX xBOM और CBOM लिखता है।
vet को किसी खाते की आवश्यकता नहीं है और यह कोई सोर्स कोड नहीं भेजता।
त्वरित शुरुआत
brew install --cask safedep/tap/vet@edge
vet scan
vet scan --fail-on high # exit 1 on a high or critical finding
vet scan --base-ref origin/main --fail-on high # report only what a pull request changes
vet report show --report sarif=vet.sarif # write SARIF from the saved scan, with no new scan
इंस्टॉल
| चैनल | कमांड |
|---|---|
| Homebrew | brew install --cask safedep/tap/vet@edge |
| mise | mise use -g 'github:safedep/vet[prerelease=true]@2' |
| Go | go install github.com/safedep/vet/v2/cmd/vet@latest |
| कंटेनर | docker run --rm -v "$PWD:/src" -w /src ghcr.io/safedep/vet:v2-latest scan |
mise किसी रिलीज़ को उसके प्रकाशन के एक दिन बाद इंस्टॉल करता है। नवीनतम बिल्ड के लिए कमांड, रिलीज़ बाइनरीज़ और बिल्ड अटेस्टेशन install.md में दिए गए हैं।
vet क्या स्कैन करता है
| लक्ष्य | उदाहरण |
|---|---|
| एक डायरेक्टरी (डिफ़ॉल्ट) | vet scan, vet scan ./service |
| एक git रिपॉज़िटरी | vet scan https://github.com/safedep/vet |
| एक कंटेनर इमेज | vet scan oci://alpine:3.20, vet scan image.tar |
| एक SBOM (CycloneDX या SPDX) | vet scan sbom.cdx.json |
| एक पैकेज | vet scan pkg:npm/[email protected] |
| इस मशीन पर मौजूद टूल्स | vet endpoint audit |
vet npm, PyPI, Go, Maven, Gradle, Cargo, RubyGems, NuGet, Packagist, Pub और अन्य के लॉकफ़ाइल्स और मैनिफ़ेस्ट पढ़ता है। यह लक्ष्य के GitHub Actions वर्कफ़्लो और AI एजेंट कॉन्फ़िग्स भी पढ़ता है। यह उनमें से किसी को इंस्टॉल या रन नहीं करता। कंट्रोल्स इस डेटा को फ़ाइंडिंग्स में बदलते हैं। देखें controls.md।
पॉलिसी
एक पॉलिसी तय करती है कि स्कैन कब विफल होगा। इस फ़ाइल को vet-policy.yml के रूप में सहेजें:
version: 2
rules:
- id: no-malware
description: A malicious or suspicious package fails the build.
when: finding.family == "malware"
action: fail
- id: no-workflow-injection
when: finding.control_id in ["dangerous-trigger", "template-injection"]
action: fail
- id: no-critical-vulnerability
when: finding.control_id == "vulnerability" && finding.severity == "critical"
action: fail
- id: new-dependency-age
description: A pull request cannot add a version that is less than 14 days old.
when: package.change == "ADDED" && has(package.days_since_publish) && package.days_since_publish < 14
action: fail
suppressions:
- purl: pkg:npm/[email protected]
reason: The upgrade to 4.18.1 is in pull request 42.
expires: 2026-12-31
पिछले स्कैन पर इसका परीक्षण करें, बिना किसी नए स्कैन के। फिर इसे एक pull request पर लागू करें:
vet report show last --policy vet-policy.yml
vet scan --base-ref origin/main --policy vet-policy.yml
इसकी समाप्ति तिथि के बाद, suppression अब finding को नहीं छिपाता है। नियम फ़ील्ड, अधिक नियमों और आपके लिए policy लिखने वाले Agent Skill के बारे में policy.md पढ़ें।
उपयोग के मामले
- Pull request जाँच। vet GitHub Action उस pull request पर टिप्पणी करता है जो कोई package, workflow या finding जोड़ता है, और किसी attack पर जाँच को विफल कर देता है।
vet ci initइसे किसी repository में जोड़ता है। - CI gate। Exit codes, GitHub code scanning के लिए SARIF, GitLab और Bitbucket रिपोर्ट। देखें ci.md।
- Pull request समीक्षा।
--base-refकेवल उन packages और workflows की रिपोर्ट करता है जो कोई परिवर्तन जोड़ता है। - xBOM और CBOM। आपका code जिन AI libraries और crypto का उपयोग करता है, उनकी CycloneDX 1.7 inventory। देखें inventory.md।
- AI agents। vet Claude Code और अन्य agents को खोजता है, और फिर JSON लिखता है और कभी prompt नहीं करता।
- Endpoint audit।
vet endpoint auditकिसी developer मशीन पर AI tools, MCP servers, editor extensions और global npm packages की सूची बनाता है, और उन्हें malware के लिए जाँचता है।