
ماسح ثغرات تبعيات بايثون، مكتوب بلغة Rust.
Pyscan هو ماسح ثغرات عالي التزامن مكتوب بلغة Rust. يتنقل تلقائيًا عبر مشروع Python الخاص بك، ويستخرج التبعيات عبر تنسيقات التغليف المختلفة، ويطابقها مع قاعدة بيانات الثغرات مفتوحة المصدر (OSV) في طلب دُفعة غير متزامن واحد.
صُمم Pyscan لحل اختناقات الأداء والذاكرة في أدوات الأمان التقليدية المبنية على Python:
pip-audit وsafety على مجموعات البيانات المتوسطة إلى الكبيرة. يعمل وقت تشغيل Pyscan وفق نموذج تعقيد زمني $O(\text{vulns})$، إذ يتناسب زمن التنفيذ مع عدد الثغرات المكتشفة، وليس مع عدد التبعيات لديك.uv.lock وrequirements.txt وpyproject.toml (Poetry, Hatch, PDM, Flit)، أو ديناميكيًا عبر تحليل الكود المصدري الخام .py.اقرأ التحليل المتعمق في تقرير المعايير.
يمكنك تثبيت Pyscan عبر pipx أو pip (حزمة Python مُجمَّعة بصيغة wheel) أو cargo (ثنائي Rust أصلي):
# via pipx (recommended) (Note the "-rs" suffix)
pipx install pyscan-rs
# via pip (Note the "-rs" suffix)
pip install pyscan-rs
# via Cargo
cargo install pyscan
ما عليك سوى تشغيل pyscan في المجلد الجذر لمشروعك، أو توجيهه إلى مجلد مصدري محدد:
# Scan the current directory
pyscan
# Scan a specific directory
pyscan -d path/to/src
إذا وُجدت ملفات مصدرية متعددة، يستخرج Pyscan التبعيات وفقًا لسلسلة الأولوية هذه:
bom.json, spdx.json)uv.lockrequirements.txtpyproject.toml.py)سيلجأ Pyscan إلى الاستعلام من PyPI عن أحدث إصدار إذا وُجدت تبعية بدون إصدار محدد بدقة، على الرغم من أن الالتزام ببناء جملة PEP-508 موصى به بشدة.
يتطلب Pyscan مجموعة أدوات Rust >= v1.70 ويستفيد من الاتصال الشبكي غير المتزامن عبر reqwest وtokio لتوازي استعلامات OSV وزيادة الإنتاجية إلى أقصى حد. إذا كنت مهتمًا بمعرفة كيفية تنظيم المحلل والماسح، فراجع نظرة عامة على البنية.
Pyscan أداة عالية التحسين، لكنها لم تُختبر بعد في جميع الحالات الحدية. وهي لا تضمن أن الكود الخاص بك آمن 100% من جميع نواقل الهجوم. أوصي بشدة باستخدام نهج أمني متعدد الطبقات إلى جانب أدوات مثل Dependabot أو pip-audit أو Trivy. الطلبات (PRs) والقضايا (issues) مرحب بها بحرارة!
بدأت هذا المشروع عندما كنت طالب مدرسة ثانوية مفلسًا، والآن أنا طالب جامعي مفلس. إذا كان Pyscan قد وفّر على خطوط أنابيب CI/CD الخاصة بك بعض الوقت الثمين والذاكرة، ففكر في شراء قهوة لي: