Kwetsbaarheidsscan van dependencies API
Controleer tot 50 open-source dependencies in één aanroep bij OSV.dev. Levert CVE-aliassen, een berekende CVSS-basisscore, CWE-classificaties en de exacte versies die elk advies verhelpen.
Heb je geen API key?
Meld je aan bij je account om je API keys aan te maken en te beheren.
Integratiegids
Kopieer een snippet, vervang je API key, draaien. Werkt in elke HTTP-client — voorbeelden hieronder in cURL, JavaScript en Python.
/api/scan-dependencieshttps://www.apipick.comCheck open-source packages against the OSV.dev vulnerability database
packagesarrayverplichtUp 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"
}
]
}'{
"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
}Gebouwd voor praktijksituaties
Release-gates
Laat een build falen zodra een dependency een CVSS-drempel overschrijdt. Met een numerieke score is het beleid één regel getalvergelijking in plaats van tekst matchen.
Coding-agents
Laat een agent een versie controleren voordat die hem in een manifest schrijft, en in dezelfde beurt de herstelde versie voorstellen.
Lockfile-audits
Stuur een volledig manifest in blokken van 50 door en krijg per service één samenvatting op ernst, zonder een scanner in de CI te draaien.
Due diligence op leveranciers
Beoordeel de door een derde opgegeven dependencies aan de hand van openbare adviezen vóór ondertekening, met gegevens waarnaar je kunt verwijzen.
Responsvelden
| Veld | Type | Beschrijving |
|---|---|---|
| summary.vulnerable_packages | integer | Hoeveel van de ingediende pakketten minstens één advies hebben |
| summary.by_severity | object | Aantal adviezen per critical / high / medium / low / none / unknown |
| summary.highest_cvss_score | number | null | Hoogste CVSS-basisscore in de hele scan |
| results[].vulnerable | boolean | Of deze pakketversie een niet-ingetrokken advies heeft |
| results[].vulnerabilities[].id | string | OSV-adviesnummer, bijv. GHSA-35jh-r3h4-6jhm |
| results[].vulnerabilities[].cve | string | null | CVE-alias, als die bestaat |
| results[].vulnerabilities[].severity | string | CRITICAL, HIGH, MEDIUM, LOW, NONE of UNKNOWN |
| results[].vulnerabilities[].cvss_score | number | null | CVSS v3.1-basisscore, berekend uit de vector van het advies |
| results[].vulnerabilities[].cwe_ids | string[] | CWE-classificaties van de zwakte in het advies |
| results[].vulnerabilities[].fixed_versions | string[] | Versies van dit pakket die het advies verhelpen |
| results[].error | string | null | Gevuld wanneer juist dit pakket niet gecontroleerd kon worden; de rest wordt gewoon teruggegeven |
| credits_used | integer | Voor dit verzoek afgeschreven credits |
| remaining_credits | integer | Resterende credits in je account |
Rate limits
Throttling is per API key, een verschuivend venster van 60 seconden. Bereik je de limiet, dan krijg je een nette 429 met een Retry-After-header.
20req/min
Per API key, per endpoint. Verschuivend venster van 60 seconden.
3concurrent
Max. gelijktijdig lopende verzoeken per API key.
X-RateLimit-LimitMaximaal toegestane verzoeken per minuutX-RateLimit-RemainingResterende verzoeken in het huidige vensterX-RateLimit-ResetSeconden tot het huidige venster opnieuw startRetry-AfterSeconden te wachten voor opnieuw proberen (alleen bij 429)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
}Gegevensbron en licentie
De adviezen komen uit OSV.dev, de open kwetsbaarhedendatabase van Google, gepubliceerd onder CC-BY-4.0. OSV brengt de GitHub Advisory Database, de Go-kwetsbaarhedendatabase, RustSec, PyPA en de securitytrackers van de grote distributies samen in één schema. Wij voegen de berekening van de CVSS-basisscore en de samenvatting per pakket toe.
Veelgestelde vragen
V: Waar komen de kwetsbaarheidsgegevens vandaan?
A: Uit OSV.dev, de open kwetsbaarhedendatabase van Google. Die brengt de GitHub Advisory Database, de Go-kwetsbaarhedendatabase, RustSec, PyPA en de securitytrackers van distributies samen in één schema en publiceert alles onder CC-BY-4.0. Adviezen zijn doorgaans binnen enkele uren na publicatie beschikbaar.
V: Hoe wordt de CVSS-score berekend?
A: OSV-adviezen bevatten wel de CVSS-vectorstring, maar niet het getal. Wij berekenen de CVSS v3.1-basisscore uit die vector met de officiële formule, zodat je een waarde krijgt waarop je direct een drempel kunt zetten. Heeft een advies geen v3-vector (alleen v4, of een ecosysteemadvies zonder vector), dan is cvss_score null en valt severity terug op de eigen beoordeling van de uitgever.
V: Kan ik een volledig lockfile scannen?
A: Ja — parse het aan jouw kant en stuur tot 50 pakketten per aanroep. Eén aanroep kost 5 credits, ongeacht hoeveel pakketten erin zitten, dus een blok van 50 komt neer op 0,1 credit per pakket. Splits grotere manifesten in blokken van 50.
V: Worden versiebereiken ondersteund?
A: Nee. Stuur de exact geïnstalleerde versie zoals die in je lockfile staat (4.17.15, niet ^4.17.0). OSV vergelijkt bereiken met een concrete versie om te bepalen of die getroffen is, dus een bereik als invoer heeft geen eenduidig antwoord.
V: Wat gebeurt er als de opvraging van één pakket mislukt?
A: De scan wordt alsnog teruggegeven. Dat pakket krijgt een veld error en telt niet mee in de samenvatting, terwijl alle andere pakketten normaal worden gerapporteerd. De respons zet ook packages_failed, zodat je weet dat de samenvatting onvolledig is.