
قاعدة بيانات مملوكة للمجتمع للتنبيهات الأمنية لحزم Python على PyPI، توفر بيانات ثغرات منظمة بتنسيق OSV للتكامل مع أدوات مثل pip-audit وOSV.
هذه مستودع مملوك للمجتمع يحتوي على نصائح أمان للحزم المنشورة على https://pypi.org.
توجد النصائح في دليل vulns وتستخدم ترميز YAML بتنسيق بسيط.
يمكن تعديل الإدخالات الموجودة ببساطة عن طريق إنشاء طلب سحب.
لإدخال إدخال جديد، أنشئ طلب سحب بملف جديد يحمل اسمًا يطابق PYSEC-0000-<anything>.yaml. سيتم التقاط هذا لاحقًا بواسطة
الأتمتة لتخصيص معرف مناسب بعد الدمج.
يمكنك التحقق من بنية ملف YAML الخاص بك عن طريق تشغيل:
pipx run check-jsonschema --schemafile https://raw.githubusercontent.com/ossf/osv-schema/main/validation/schema.json <PATH TO YAML FILE>
يتم جمع معظم الثغرات الأمنية الموجودة من خلاصة NVD CVE.
نستخدم هذه الأداة، والتي
تقوم بالكثير من الاستدلالات لمطابقة CVEs مع حزم وإصدارات بايثون الدقيقة
(وهي مشكلة صعبة!) وكمية صغيرة من الفرز البشري لإنشاء
إدخالات .yaml هنا.
للمساعدة في تقليل النتائج الإيجابية الخاطئة، يمكن أن تتضمن الإدخالات في هذه القاعدة بيانات تفاصيل حول عناصر كود محددة لحزمة معرضة للخطر.
تحتوي إدخالات OSV في هذه القاعدة بيانات على تعريف ecosystem_specific التالي لترميز ذلك:
"ecosystem_specific": {
"imports": [
{
"attribute": string,
"modules": [ string ],
}
]
}
"imports" هو مصفوفة JSON تحتوي على الوحدات والسمات المتأثرة بالثغرة الأمنية... على سبيل المثال، يمكن تمثيل ثغرة أمنية تؤثر على PIL::ImageFont على النحو التالي...
"imports": [
{
"attribute": "ImageFont",
"modules": ["PIL"]
}
]
وهو ما يعادل PIL:ImageFont. إذا كانت سمة ثانية ImageFont2 متأثرة أيضًا، فيجب إضافة إدخال استيراد ثانٍ إلى مصفوفة imports.
"imports": [
{ "attribute": "ImageFont", "modules": ["PIL"] },
{ "attribute": "ImageFont2", "modules": ["PIL"] }
]
يمكن تمثيل السمات التي يمكن الوصول إليها عبر مسارات متعددة في شكل مختصر. ضع في اعتبارك السمة django.db.models:JSONField من مشروع django.
السمة django.db.models:JSONField هي إعادة تصدير لـ django.db.models.fields.json:JSONField وكلاهما مسارات صالحة.
يمكن اختصار هذه إلى تمثيل OSV أكثر إحكامًا على النحو التالي:
{
"attribute": "JSONField",
"modules": ["django.db.models", "django.db.models.fields.json"]
}
يتم عرض هذه البيانات بواسطة pip-audit،
الذي يوفر واجهة سطر أوامر لحل تبعيات بايثون في بيئة
أو مشروع وتحديد الثغرات الأمنية المعروفة:
python -m pip install pip-audit
python -m pip-audit -r requirements.txt
يمكنك أيضًا استخدام pypa/gh-action-pip-audit
على GitHub Actions:
jobs:
pip-audit:
steps:
- uses: pypa/[email protected]
with:
inputs: requirements.txt
يتم دمج الثغرات الأمنية في مشروع Open Source Vulnerabilities، الذي يوفر واجهة برمجة تطبيقات للاستعلام عن الثغرات الأمنية على النحو التالي:
$ curl -X POST -d \
'{"version": "2.4.1", "package": {"name": "jinja2", "ecosystem": "PyPI"}}' \
"https://api.osv.dev/v1/query"
تم أيضًا دمج هذه البيانات في واجهة برمجة تطبيقات PyPI JSON.
من المتوقع أن يتبع كل من يتفاعل مع هذا المشروع مدونة قواعد سلوك PSF.