
समुदाय-स्वामित्व वाला डेटाबेस जो PyPI पर Python पैकेजों के लिए सुरक्षा परामर्श (security advisories) प्रदान करता है, तथा OSV प्रारूप में संरचित भेद्यता डेटा उपलब्ध कराता है, जिसे pip-audit और OSV जैसे टूल्स के साथ एकीकृत किया जा सकता है।
यह https://pypi.org पर प्रकाशित पैकेजों के लिए सलाहकारों का एक समुदाय-स्वामित्व वाला भंडार है।
सलाहकार vulns निर्देशिका में रहते हैं और सरल प्रारूप के YAML एन्कोडिंग का उपयोग करते हैं।
मौजूदा प्रविष्टियों को केवल पुल अनुरोध बनाकर संपादित किया जा सकता है।
नई प्रविष्टि पेश करने के लिए, PYSEC-0000-<anything>.yaml नाम से मेल खाती नई फ़ाइल के साथ पुल अनुरोध बनाएं। विलय होने के बाद उचित ID आवंटित करने के लिए इसे बाद में स्वचालन द्वारा उठाया जाएगा।
आप अपनी YAML फ़ाइल की संरचना को चलाकर मान्य कर सकते हैं:
pipx run check-jsonschema --schemafile https://raw.githubusercontent.com/ossf/osv-schema/main/validation/schema.json <PATH TO YAML FILE>
मौजूदा कमजोरियों का अधिकांश सेट NVD CVE फ़ीड से एकत्र किया गया है।
हम इस टूल का उपयोग करते हैं, जो CVEs को सटीक Python पैकेजों और संस्करणों के साथ मिलान करने के लिए कई अनुमान लगाता है (जो एक कठिन समस्या है!) और यहाँ .yaml प्रविष्टियाँ उत्पन्न करने के लिए थोड़ी मात्रा में मानव ट्राइएज करता है।
गलत सकारात्मक मिलान को कम करने में मदद करने के लिए, इस डेटाबेस की प्रविष्टियों में किसी पैकेज के विशिष्ट कोड तत्वों के विवरण शामिल हो सकते हैं जो कमजोर हैं।
इस डेटाबेस में OSV प्रविष्टियों में इसे एन्कोड करने के लिए निम्नलिखित ecosystem_specific परिभाषा है:
"ecosystem_specific": {
"imports": [
{
"attribute": string,
"modules": [ string ],
}
]
}
"imports" एक JSON सरणी है जिसमें कमजोरी से प्रभावित मॉड्यूल और विशेषताएँ शामिल हैं... उदाहरण के लिए, एक कमजोरी जो PIL::ImageFont को प्रभावित करती है, उसे इस प्रकार दर्शाया जा सकता है...
"imports": [
{
"attribute": "ImageFont",
"modules": ["PIL"]
}
]
जो PIL:ImageFont के बराबर है। यदि दूसरी विशेषता ImageFont2 भी प्रभावित है, तो imports सरणी में दूसरी import प्रविष्टि जोड़ी जानी चाहिए।
"imports": [
{ "attribute": "ImageFont", "modules": ["PIL"] },
{ "attribute": "ImageFont2", "modules": ["PIL"] }
]
कई पथों के माध्यम से सुलभ विशेषताओं को संक्षिप्त रूप में दर्शाया जा सकता है। django प्रोजेक्ट से विशेषता django.db.models:JSONField पर विचार करें।
विशेषता 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 निर्भरताओं को हल करने और ज्ञात कमजोरियों की पहचान करने के लिए CLI प्रदान करता है:
python -m pip install pip-audit
python -m pip-audit -r requirements.txt
आप GitHub Actions पर pypa/gh-action-pip-audit का भी उपयोग कर सकते हैं:
jobs:
pip-audit:
steps:
- uses: pypa/[email protected]
with:
inputs: requirements.txt
कमजोरियों को Open Source Vulnerabilities प्रोजेक्ट में एकीकृत किया गया है, जो इस प्रकार कमजोरियों को क्वेरी करने के लिए API प्रदान करता है:
$ curl -X POST -d \
'{"version": "2.4.1", "package": {"name": "jinja2", "ecosystem": "PyPI"}}' \
"https://api.osv.dev/v1/query"
यह डेटा PyPI JSON API में भी एकीकृत किया गया है।
इस प्रोजेक्ट के साथ बातचीत करने वाले सभी लोगों से PSF आचार संहिता का पालन करने की अपेक्षा की जाती है।