
احمِ نفسك من حزم المصادر المفتوحة الخبيثة 🤖
اكتشف الحزم الخبيثة والثغرات وسير عمل CI الخطرة قبل وصولها إلى الإنتاج.
[!NOTE] هذا الفرع هو vet v2، في مرحلة ألفا. vet v1 موجود على
mainويبقى الإصدار الأحدث. توضح ملاحظات إصدار v2.0.0 كيف يقابل كل أمر وعلامة في v1 نظيرها في v2.
تبعياتك وسير عمل GitHub Actions وإعدادات وكلاء الذكاء الاصطناعي لديك تشغّل شيفرة لم تكتبها أنت. يكتشف vet المخاطر فيها.
لا يحتاج 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 |
| Container | docker run --rm -v "$PWD:/src" -w /src ghcr.io/safedep/vet:v2-latest scan |
يثبّت mise الإصدار بعد يوم واحد من نشره. يحتوي install.md على الأمر الخاص بأحدث بناء، وملفات الإصدار الثنائية، وإثباتات البناء.
| الهدف | مثال |
|---|---|
| مجلد (الافتراضي) | 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 وإعدادات وكلاء الذكاء الاصطناعي في الهدف. وهو لا يثبّت أو يشغّل أيًّا منها. تحوّل عناصر التحكم هذه البيانات إلى نتائج. راجع 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
بعد تاريخ انتهاء صلاحيتها، لم يعد التجاوز يخفي النتيجة. اقرأ policy.md للاطلاع على حقول القواعد، والمزيد من القواعد، و Agent Skill الذي يكتب سياسة نيابة عنك.
vet ci init إلى مستودع.--base-ref فقط عن الحزم وسير العمل التي يضيفها التغيير.vet endpoint audit أدوات الذكاء الاصطناعي وخوادم MCP وإضافات
المحرر وحزم npm العامة على جهاز المطوّر، ويفحصها بحثًا عن البرمجيات الخبيثة.| الصفحة | اقرأها من أجل |
|---|---|
| التثبيت | جميع القنوات وكيفية التحقق من إصدار |
| الأوامر | كل أمر وعلاماته ورموز الخروج الخاصة به |
| عناصر التحكم | عناصر التحكم وخياراتها |
| السياسات | القواعد والتجاوزات والبوابة |
| المخرجات | صيغ التقارير والفحوصات المحفوظة والإعدادات |
| CI ووكلاء الذكاء الاصطناعي | GitHub Actions و GitLab و Bitbucket ووضع الوكيل |
| الجرد | استخدام الشيفرة، والذكاء الاصطناعي والتشفير، وxBOM و CBOM |
يرسل vet هوية كل حزمة (نظامها البيئي واسمها وإصدارها) إلى SafeDep للحصول على البيانات المتعلقة بها. ولا يرسل vet أي شيفرة مصدرية أو محتوى ملفات.