
vet v1.18.2
दुर्भावनापूर्ण ओपन सोर्स पैकेजों से सुरक्षा करें 🤖
दुर्भावनापूर्ण पैकेज, कमज़ोरियाँ और जोखिम भरे CI वर्कफ़्लो को प्रोडक्शन तक पहुँचने से पहले खोजें।
[!NOTE] यह ब्रांच vet v2 है, जो अल्फा में है। vet v1
mainपर है और नवीनतम रिलीज़ बना हुआ है। v2.0.0 रिलीज़ नोट्स में प्रत्येक v1 कमांड और फ़्लैग को v2 से मैप किया गया है।
vet क्यों
आपकी डिपेंडेंसीज़, आपके GitHub Actions वर्कफ़्लो और आपके AI एजेंट कॉन्फ़िग ऐसा कोड चलाते हैं जो आपने नहीं लिखा। vet उनमें जोखिम खोजता है।
- दुर्भावनापूर्ण पैकेज। vet प्रत्येक पैकेज को SafeDep Threat Intel के विरुद्ध जाँचता है। Threat Intel नए पैकेज संस्करणों का विश्लेषण तब करता है जब रजिस्ट्रियाँ उन्हें प्रकाशित करती हैं।
- ज्ञात कमज़ोरियाँ, साथ में उस फ़िक्स्ड वर्शन के साथ जिस पर अपग्रेड करना है।
- जोखिम भरे वर्कफ़्लो। खतरनाक ट्रिगर, टेम्पलेट इंजेक्शन, उजागर सीक्रेट्स और बिना पिन किए कमिट SHA वाले actions।
- लॉकफ़ाइल छेड़छाड़ और नए वर्शन। अविश्वसनीय रजिस्ट्री से आने वाली एंट्रीज़, और कूलडाउन विंडो के भीतर के वर्शन।
- पॉलिसी एज़ कोड। 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
इंस्टॉल
| Channel | Command |
|---|---|
| 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 |
| Container | docker run --rm -v "$PWD:/src" -w /src ghcr.io/safedep/vet:v2-latest scan |
mise किसी रिलीज़ को उसके प्रकाशन के एक दिन बाद इंस्टॉल करता है। install.md में नवीनतम बिल्ड के लिए कमांड, रिलीज़ बाइनरीज़ और बिल्ड अटेस्टेशन दिए गए हैं।
vet क्या स्कैन करता है
| Target | Example |
|---|---|
| एक डायरेक्टरी (डिफ़ॉल्ट) | 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 इस डेटा को फ़ाइंडिंग्स में बदलते हैं। देखें 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
इसे पिछले स्कैन पर टेस्ट करें, बिना किसी नए स्कैन के। फिर इसे एक पुल रिक्वेस्ट पर लागू करें:
vet report show last --policy vet-policy.yml
vet scan --base-ref origin/main --policy vet-policy.yml
अपनी समाप्ति तिथि के बाद, suppression फ़ाइंडिंग को छिपाता नहीं है। नियम फ़ील्ड, अधिक नियमों और Agent Skill के लिए policy.md पढ़ें, जो आपके लिए एक पॉलिसी लिखता है।
उपयोग के मामले
- पुल रिक्वेस्ट चेक। vet GitHub Action उस पुल रिक्वेस्ट पर कमेंट करता है जो
कोई पैकेज, वर्कफ़्लो या फ़ाइंडिंग जोड़ती है, और किसी हमले पर चेक फेल कर देता है।
vet ci initइसे एक रिपॉज़िटरी में जोड़ता है। - CI गेट। एग्ज़िट कोड, GitHub कोड स्कैनिंग के लिए SARIF, GitLab और Bitbucket रिपोर्ट। देखें ci.md।
- पुल रिक्वेस्ट रिव्यू।
--base-refकेवल उन पैकेजों और वर्कफ़्लो की रिपोर्ट करता है जो कोई बदलाव जोड़ता है। - xBOM और CBOM। आपके कोड द्वारा उपयोग की जाने वाली AI लाइब्रेरीज़ और क्रिप्टो की CycloneDX 1.7 इन्वेंटरी। देखें inventory.md।
- AI एजेंट। vet Claude Code और अन्य एजेंट खोजता है, और फिर JSON लिखता है और कभी प्रॉम्प्ट नहीं करता।
- एंडपॉइंट ऑडिट।
vet endpoint auditएक डेवलपर मशीन पर AI टूल्स, MCP सर्वर, एडिटर एक्सटेंशन और ग्लोबल npm पैकेजों की सूची बनाता है, और उन्हें मैलवेयर के लिए जाँचता है।