[ Sicherheit · Lieferkette ]● 5 Cr. · 20 Anfr./Min.

Abhängigkeits- Schwachstellenscan API

Prüft bis zu 50 Open-Source-Abhängigkeiten in einem einzigen Aufruf gegen OSV.dev. Liefert CVE-Aliase, einen berechneten CVSS-Basiswert, CWE-Kennungen und die genauen Versionen, die jede Meldung beheben.

OSV.dev-MeldungenCVSS v3.1 bewertet13 Ökosysteme
auth · x-api-key

Noch keinen API-Key?

Melde dich an, um API-Keys zu erstellen und zu verwalten.

[ 02 · integrate ]

Integrationsleitfaden

Snippet kopieren, deinen API-Key einsetzen, ausführen. Funktioniert in jedem HTTP-Client — Beispiele unten in cURL, JavaScript und Python.

spec
POST/api/scan-dependencies
base
https://www.apipick.com

Check open-source packages against the OSV.dev vulnerability database

Parameter
packagesarrayerforderlich

Up to 50 objects, each with ecosystem, name, and an exact installed version. [{"ecosystem":"npm","name":"lodash","version":"4.17.15"}]

curl -X POST "https://www.apipick.com/api/scan-dependencies" \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
  "packages": [
    {
      "ecosystem": "npm",
      "name": "lodash",
      "version": "4.17.15"
    },
    {
      "ecosystem": "PyPI",
      "name": "requests",
      "version": "2.19.0"
    }
  ]
}'
● 200 · Antwort
{
  "summary": {
    "packages_scanned": 2,
    "vulnerable_packages": 2,
    "total_vulnerabilities": 8,
    "by_severity": {
      "critical": 1,
      "high": 3,
      "medium": 4,
      "low": 0,
      "none": 0,
      "unknown": 0
    },
    "highest_cvss_score": 9.8
  },
  "results": [
    {
      "ecosystem": "npm",
      "name": "lodash",
      "version": "4.17.15",
      "vulnerable": true,
      "highest_severity": "HIGH",
      "highest_cvss_score": 7.4,
      "vulnerability_count": 6,
      "vulnerabilities": [
        {
          "id": "GHSA-35jh-r3h4-6jhm",
          "aliases": [
            "CVE-2021-23337"
          ],
          "cve": "CVE-2021-23337",
          "summary": "Command Injection in lodash",
          "severity": "HIGH",
          "cvss_score": 7.2,
          "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H",
          "cwe_ids": [
            "CWE-77"
          ],
          "published": "2021-02-15T00:00:00Z",
          "fixed_versions": [
            "4.17.21"
          ],
          "advisory_url": "https://osv.dev/vulnerability/GHSA-35jh-r3h4-6jhm"
        }
      ],
      "error": null
    }
  ],
  "source": "OSV.dev (Google Open Source Vulnerabilities, CC-BY-4.0)",
  "credits_used": 5,
  "remaining_credits": 95
}

Gebaut für reale Anwendungsfälle

🚦

Release-Gates

Lassen Sie einen Build scheitern, sobald eine Abhängigkeit einen CVSS-Schwellenwert überschreitet. Mit einem numerischen Wert ist die Regel ein einzeiliger Vergleich statt eines Textabgleichs.

🤖

Coding-Agenten

Lassen Sie einen Agenten eine Version prüfen, bevor er sie in ein Manifest schreibt – und im selben Zug die behobene Version vorschlagen.

📋

Lockfile-Audits

Schicken Sie ein komplettes Manifest in 50er-Blöcken durch und erhalten Sie je Service eine Auswertung nach Schweregrad, ohne einen Scanner in der CI zu betreiben.

🔍

Lieferanten-Due-Diligence

Bewerten Sie die von einem Dritten angegebenen Abhängigkeiten vor Vertragsschluss anhand öffentlicher Meldungen – mit belegbaren Daten.

Antwortfelder

FeldTypBeschreibung
summary.vulnerable_packagesintegerWie viele der übermittelten Pakete mindestens eine Meldung aufweisen
summary.by_severityobjectAnzahl der Meldungen nach critical / high / medium / low / none / unknown
summary.highest_cvss_scorenumber | nullHöchster CVSS-Basiswert im gesamten Scan
results[].vulnerablebooleanOb diese Paketversion eine nicht zurückgezogene Meldung hat
results[].vulnerabilities[].idstringOSV-Meldungs-ID, z. B. GHSA-35jh-r3h4-6jhm
results[].vulnerabilities[].cvestring | nullCVE-Alias, sofern vorhanden
results[].vulnerabilities[].severitystringCRITICAL, HIGH, MEDIUM, LOW, NONE oder UNKNOWN
results[].vulnerabilities[].cvss_scorenumber | nullAus dem Vektor der Meldung berechneter CVSS-v3.1-Basiswert
results[].vulnerabilities[].cwe_idsstring[]CWE-Schwachstellenklassifizierungen der Meldung
results[].vulnerabilities[].fixed_versionsstring[]Versionen dieses Pakets, die die Meldung beheben
results[].errorstring | nullGesetzt, wenn genau dieses Paket nicht geprüft werden konnte; alle übrigen werden dennoch geliefert
credits_usedintegerFür diese Anfrage abgezogene Credits
remaining_creditsintegerVerbleibende Credits in deinem Account
[ 03 · limits ]

Rate-Limits

Die Drosselung erfolgt pro API-Key, gleitendes 60-Sekunden-Fenster. Beim Erreichen des Limits bekommst du ein sauberes 429 mit Retry-After-Header.

Anfragerate

20req/min

Pro API-Key, pro Endpunkt. Gleitendes 60-Sekunden-Fenster.

Nebenläufigkeit

3concurrent

Maximale gleichzeitige laufende Anfragen pro API-Key.

Antwort-Header
X-RateLimit-LimitMaximal zulässige Anfragen pro Minute
X-RateLimit-RemainingVerbleibende Anfragen im aktuellen Fenster
X-RateLimit-ResetSekunden bis zum Zurücksetzen des aktuellen Fensters
Retry-AfterSekunden Wartezeit vor erneutem Versuch (nur bei 429)
● 429 · zu viele Anfragen
HTTP/1.1 429 Too Many Requests
Retry-After: 12
X-RateLimit-Limit: 20
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 12

{
  "error": "rate_limit_exceeded",
  "message": "Rate limit exceeded: 20 requests/minute per API key. Retry after 12s.",
  "retry_after": 12
}

Datenquelle & Lizenz

Die Meldungen stammen aus OSV.dev, Googles offener Schwachstellendatenbank, veröffentlicht unter CC-BY-4.0. OSV führt die GitHub Advisory Database, die Go-Schwachstellendatenbank, RustSec, PyPA und die Security-Tracker der großen Distributionen in einem Schema zusammen. Wir ergänzen die Berechnung des CVSS-Basiswerts und die Auswertung je Paket.

Häufig gestellte Fragen

F: Woher stammen die Schwachstellendaten?

A: Aus OSV.dev, Googles offener Schwachstellendatenbank. Sie führt die GitHub Advisory Database, die Go-Schwachstellendatenbank, RustSec, PyPA und die Security-Tracker der Distributionen in einem Schema zusammen und veröffentlicht sie unter CC-BY-4.0. Meldungen sind in der Regel wenige Stunden nach Veröffentlichung abrufbar.

F: Wie wird der CVSS-Wert berechnet?

A: OSV-Meldungen enthalten die CVSS-Vektorzeichenfolge, aber nicht den Zahlenwert. Wir berechnen den CVSS-v3.1-Basiswert nach der offiziellen Formel aus diesem Vektor – Sie erhalten also einen Wert, auf den Sie direkt einen Schwellenwert setzen können. Fehlt einer Meldung ein v3-Vektor (nur v4 oder eine Ökosystem-Meldung ohne Vektor), ist cvss_score null und severity greift auf die Einstufung des Herausgebers zurück.

F: Kann ich ein komplettes Lockfile scannen?

A: Ja – parsen Sie es auf Ihrer Seite und senden Sie bis zu 50 Pakete pro Aufruf. Ein Aufruf kostet 5 Credits, unabhängig davon, wie viele Pakete er enthält; ein 50er-Block entspricht also 0,1 Credits pro Paket. Größere Manifeste teilen Sie in 50er-Blöcke auf.

F: Werden Versionsbereiche unterstützt?

A: Nein. Senden Sie die exakt installierte Version, so wie sie im Lockfile steht (4.17.15, nicht ^4.17.0). OSV gleicht Bereiche gegen eine konkrete Version ab, um zu bestimmen, ob diese betroffen ist – ein Bereich als Eingabe hat daher keine eindeutige Antwort.

F: Was passiert, wenn die Abfrage eines Pakets fehlschlägt?

A: Der Scan wird trotzdem zurückgegeben. Das betreffende Paket erhält ein error-Feld und fließt nicht in die Zusammenfassung ein, während alle anderen normal gemeldet werden. Die Antwort setzt außerdem packages_failed, damit Sie wissen, dass die Auswertung unvollständig ist.