
osv-scanner v2.5.0
ماسح الثغرات الأمنية مكتوب بلغة Go يستخدم البيانات المقدمة من https://osv.dev
استخدم OSV-Scanner لاكتشاف الثغرات الأمنية الحالية التي تؤثر على تبعيات مشروعك. يوفر OSV-Scanner واجهة أمامية مدعومة رسميًا لقاعدة بيانات OSV وواجهة CLI لـ OSV-Scalibr التي تربط قائمة تبعيات المشروع بالثغرات التي تؤثر عليها.
يدعم OSV-Scanner مجموعة واسعة من أنواع المشاريع ومديري الحزم والميزات، بما في ذلك على سبيل المثال لا الحصر:
- اللغات: C/C++، Dart، Elixir، Go، Java، Javascript، PHP، Python، R، Ruby، Rust.
- مديري الحزم: npm، pip، yarn، maven، go modules، cargo، gem، composer، nuget وغيرها.
- أنظمة التشغيل: يكتشف الثغرات في حزم أنظمة التشغيل على أنظمة Linux.
- الحاويات: يفحص صور الحاويات بحثًا عن ثغرات في صورها الأساسية والحزم المضمنة.
- الإصلاح الموجّه: يقدم توصيات لترقية إصدارات الحزم بناءً على معايير مثل عمق التبعية، وأقل خطورة، واستراتيجية الإصلاح، والعائد على الاستثمار.
يستخدم OSV-Scanner مكتبة OSV-Scalibr القابلة للتوسع تحت الغطاء لتوفير هذه الوظيفة. إذا كانت لغة أو مدير حزم غير مدعوم حاليًا، فيُرجى تقديم طلب ميزة.
قاعدة البيانات الأساسية
تتميز قاعدة البيانات الأساسية، OSV.dev، بعدة فوائد مقارنة بقواعد بيانات الاستشارات الأمنية والماسحات الضوئية مفتوحة المصدر:
- تغطي معظم أنظمة اللغات المفتوحة المصدر ونظم التشغيل (بما في ذلك Git)، وهي شاملة.
- كل استشارة تأتي من مصدر مفتوح وموثوق (مثل GitHub Security Advisories، RustSec Advisory Database، إشعارات أمان Ubuntu)
- يمكن لأي شخص اقتراح تحسينات على الاستشارات، مما يؤدي إلى قاعدة بيانات عالية الجودة.
- يخزن تنسيق OSV معلومات حول الإصدارات المتأثرة بشكل لا لبس فيه بتنسيق قابل للقراءة آليًا يتطابق بدقة مع قائمة حزم المطور
كل ما سبق يؤدي إلى إشعارات ثغرات دقيقة وقابلة للتنفيذ، مما يقلل الوقت اللازم لحلها. تحقق من OSV.dev لمزيد من التفاصيل!
التثبيت الأساسي
لتثبيت OSV-Scanner، يُرجى الرجوع إلى قسم التثبيت من وثائقنا. يمكن العثور على إصدارات OSV-Scanner على صفحة الإصدارات من مستودع GitHub. الطريقة الموصى بها هي تنزيل ثنائي مُجمّع مسبقًا لمنصتك. بدلاً من ذلك، يمكنك استخدام
go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest لبنائه من المصدر.
الميزات الرئيسية
لمزيد من المعلومات، يُرجى قراءة وثائقنا التفصيلية لتعلم كيفية استخدام OSV-Scanner. للحصول على معلومات مفصلة حول كل ميزة، انقر على عناوينها في هذا الملف README.
يُرجى ملاحظة: هذه هي التعليمات الخاصة بأحدث إصدار تجريبي من OSV-Scanner V2. إذا كنت تستخدم V1، فاطلع على README و الوثائق الخاصة بـ V1 بدلاً من ذلك.
مسح دليل المصدر
$ osv-scanner scan source -r /path/to/your/dir
سيقوم هذا الأمر بمسح الدليل المحدد بشكل متكرر بحثًا عن أي ملفات حزم مدعومة، مثل package.json و go.mod و pom.xml وما إلى ذلك، وسيخرج أي ثغرات مكتشفة.
لدى OSV-Scanner خيار استخدام تحليل الاستدعاء لتحديد ما إذا كانت دالة ضعيفة مستخدمة بالفعل في المشروع، مما يؤدي إلى نتائج إيجابية خاطئة أقل وتنبيهات قابلة للتنفيذ.
يمكن لـ OSV-Scanner أيضًا اكتشاف كود C/C++ المورّد لفحص الثغرات الأمنية. انظر هنا للتفاصيل.
ملفات القفل المدعومة
يدعم OSV-Scanner أكثر من 11 نظامًا بيئيًا للغات وأكثر من 19 نوعًا من ملفات القفل. للتحقق مما إذا كان نظامك البيئي مغطى، يُرجى مراجعة وثائقنا التفصيلية.
مسح الحاويات
يدعم OSV-Scanner أيضًا مسحًا شاملاً وواعيًا بطبقات الحاويات لاكتشاف الثغرات في حزم أنظمة التشغيل التالية والتبعيات الخاصة باللغة.
| دعم التوزيعات | دعم القطع الأثرية اللغوية |
|---|---|
| Alpine OS | Go |
| Debian | Java |
| Ubuntu | Node |
| Python |
انظر الوثائق الكاملة للتفاصيل حول الدعم.
الاستخدام:
$ osv-scanner scan image my-image-name:tag

مسح التراخيص
تحقق من تراخيص تبعياتك باستخدام بيانات deps.dev. للحصول على ملخص:
osv-scanner --licenses path/to/repository
للتحقق من قائمة التراخيص المسموح بها (تنسيق SPDX):
osv-scanner --licenses="MIT,Apache-2.0" path/to/directory
المسح دون اتصال
امسح مشروعك مقابل قاعدة بيانات OSV محلية. لا يلزم اتصال بالشبكة بعد التنزيل الأولي لقاعدة البيانات. يمكن أيضًا تنزيل قاعدة البيانات يدويًا.
osv-scanner --offline --download-offline-databases ./path/to/your/dir
الإصلاح الموجّه (تجريبي)
[!WARNING] يمكن أن يكون الإصلاح الموجّه (أمر
fix) محفوفًا بالمخاطر عند تشغيله على مشاريع غير موثوقة. قد يؤدي إلى تشغيل مدير الحزم لتنفيذ البرامج النصية أو اتباع السجلات الخارجية المحددة في المشروع. يرجى التأكد من ثقتك في الكود المصدري والقطع الأثرية قبل المتابعة.
يوفر OSV-Scanner الإصلاح الموجّه، وهي ميزة تقترح ترقيات إصدارات الحزم بناءً على معايير مثل عمق التبعية، وأقل خطورة، واستراتيجية الإصلاح، والعائد على الاستثمار. ندعم حاليًا إصلاح الثغرات في الملفات التالية:
| النظام البيئي | تنسيق الملف (النوع) | استراتيجيات الإصلاح المدعومة |
|---|---|---|
| npm | package-lock.json (ملف قفل) | في المكان |
| npm | package.json (manifest) | إعادة القفل |
| Maven | pom.xml (manifest) | تجاوز |
هذا متاح كأمر CLI بدون واجهة، بالإضافة إلى وضع تفاعلي.
مثال (لـ npm)
$ osv-scanner fix \
--max-depth=3 \
--min-severity=5 \
--ignore-dev \
--strategy=in-place \
-L path/to/package-lock.json
الوضع التفاعلي (لـ npm)
$ osv-scanner fix \
-M path/to/package.json \
-L path/to/package-lock.json
مصادر البيانات والخصوصية
يتواصل OSV-Scanner مع الخدمات الخارجية التالية أثناء التشغيل:
واجهة برمجة تطبيقات OSV.dev
مصدر البيانات الأساسي لمعلومات الثغرات. يستعلم OSV-Scanner من واجهة برمجة التطبيقات هذه للتحقق من الحزم بحثًا عن ثغرات معروفة ولتحديد تبعيات C/C++ الموردة. تشمل البيانات المرسلة أسماء الحزم والإصدارات والأنظمة البيئية وتجزئات الملفات. استخدم وضع --offline لتعطيل طلبات الشبكة والمسح مقابل قاعدة بيانات محلية بدلاً من ذلك.
واجهة برمجة تطبيقات deps.dev
تُستخدم للحصول على معلومات الحزم الإضافية:
- حل التبعيات: يحل الرسوم البيانية للتبعيات لفحص الثغرات والإصلاح
- مسح صور الحاويات: يستعلم عن بيانات تعريف صور الحاويات لاكتشاف الثغرات
- مسح التراخيص (علامة
--licenses): يسترجع معلومات الترخيص للحزم - إهمال الحزم: يتحقق مما إذا كانت الحزم مهملة
تشمل البيانات المرسلة أسماء الحزم والإصدارات والأنظمة البيئية. لا يتم نقل أي كود مصدر.
سجلات الحزم
عند استخدام السجل الأصلي لحل التبعيات (بدلاً من deps.dev)، قد يستعلم OSV-Scanner من:
| السجل | الرابط | المستخدم من أجل |
|---|---|---|
| Maven Central | repo.maven.apache.org/maven2 | بيانات تعريف حزمة Maven وملفات POM |
| npm Registry | registry.npmjs.org | بيانات تعريف حزمة npm |
| PyPI | pypi.org | بيانات تعريف حزمة Python |
المساهمة
الإبلاغ عن المشكلات
إذا كان لديك ما يبدو أنه خطأ، فيُرجى استخدام نظام تتبع المشكلات في GitHub. قبل تقديم مشكلة، يُرجى البحث في المشكلات الحالية لمعرفة ما إذا كانت مشكلتك مغطاة بالفعل.
المساهمة في كود osv-scanner
انظر CONTRIBUTING.md للحصول على وثائق حول كيفية المساهمة في الكود.