
Community-eigene Datenbank mit Sicherheitshinweisen für Python-Pakete auf PyPI, die strukturierte Schwachstellendaten im OSV-Format für die Integration mit Tools wie pip-audit und OSV bereitstellt.
Dies ist ein von der Community verwaltetes Repository mit Sicherheitshinweisen für Pakete, die auf https://pypi.org veröffentlicht werden.
Die Sicherheitshinweise befinden sich im Verzeichnis vulns und verwenden eine YAML-Kodierung eines einfachen Formats.
Bestehende Einträge können bearbeitet werden, indem Sie einfach einen Pull Request erstellen.
Um einen neuen Eintrag einzuführen, erstellen Sie einen Pull Request mit einer neuen Datei, deren Name
dem Muster PYSEC-0000-<beliebig>.yaml entspricht. Diese wird später von der Automatisierung
aufgegriffen, um nach dem Zusammenführen eine passende ID zuzuweisen.
Sie können die Struktur Ihrer YAML-Datei mit folgendem Befehl validieren:
pipx run check-jsonschema --schemafile https://raw.githubusercontent.com/ossf/osv-schema/main/validation/schema.json <PFAD ZUR YAML-DATEI>
Ein Großteil der vorhandenen Schwachstellen wird aus dem NVD CVE-Feed gesammelt.
Wir verwenden dieses Tool, das
viele Heuristiken anwendet, um CVEs mit exakten Python-Paketen und
Versionen abzugleichen (was ein schwieriges Problem ist!) sowie einen geringen Anteil manueller Triage, um
die .yaml-Einträge hier zu generieren.
Um die Reduzierung falsch positiver Übereinstimmungen zu unterstützen, können Einträge in dieser Datenbank Details zu bestimmten Codeelementen eines Pakets enthalten, die verwundbar sind.
OSV-Einträge in dieser Datenbank haben die folgende ecosystem_specific-Definition, um dies zu kodieren:
"ecosystem_specific": {
"imports": [
{
"attribute": string,
"modules": [ string ],
}
]
}
„imports" ist ein JSON-Array, das die Module und Attribute enthält, die von der Schwachstelle betroffen sind... Beispielsweise kann eine Schwachstelle, die PIL::ImageFont betrifft, wie folgt dargestellt werden...
"imports": [
{
"attribute": "ImageFont",
"modules": ["PIL"]
}
]
was äquivalent zu PIL:ImageFont ist. Wenn auch ein zweites Attribut ImageFont2 betroffen ist, muss dem imports-Array ein zweiter Importeintrag hinzugefügt werden.
"imports": [
{ "attribute": "ImageFont", "modules": ["PIL"] },
{ "attribute": "ImageFont2", "modules": ["PIL"] }
]
Attribute, die über mehrere Pfade zugänglich sind, können in einer kompakten Form dargestellt werden. Betrachten Sie das Attribut django.db.models:JSONField aus dem django-Projekt.
Das Attribut django.db.models:JSONField ist ein Re-Export von django.db.models.fields.json:JSONField, und beide sind gültige Pfade.
Diese können zu einer kompakteren OSV-Darstellung zusammengefasst werden als:
{
"attribute": "JSONField",
"modules": ["django.db.models", "django.db.models.fields.json"]
}
Diese Daten werden von pip-audit bereitgestellt,
das eine CLI zum Auflösen von Python-Abhängigkeiten in einer Umgebung
oder einem Projekt und zur Identifizierung bekannter Schwachstellen bietet:
python -m pip install pip-audit
python -m pip-audit -r requirements.txt
Sie können auch pypa/gh-action-pip-audit
auf GitHub Actions verwenden:
jobs:
pip-audit:
steps:
- uses: pypa/[email protected]
with:
inputs: requirements.txt
Schwachstellen sind in das Open Source Vulnerabilities-Projekt integriert, das eine API zum Abfragen von Schwachstellen wie folgt bereitstellt:
$ curl -X POST -d \
'{"version": "2.4.1", "package": {"name": "jinja2", "ecosystem": "PyPI"}}' \
"https://api.osv.dev/v1/query"
Diese Daten wurden auch in die PyPI JSON API integriert.
Von allen Personen, die mit diesem Projekt interagieren, wird erwartet, dass sie den PSF Code of Conduct befolgen.