Bağımlılık güvenlik açığı taraması API
En fazla 50 açık kaynak bağımlılığını tek çağrıda OSV.dev üzerinden denetleyin. CVE takma adlarını, hesaplanmış bir CVSS temel puanını, CWE kimliklerini ve her bildirimi gideren tam sürümleri döndürür.
API key'iniz yok mu?
API key'lerinizi oluşturmak ve yönetmek için hesabınızda oturum açın.
Entegrasyon rehberi
Bir snippet kopyalayın, API anahtarınızı yerleştirin, çalıştırın. Herhangi bir HTTP istemcisinde çalışır — aşağıdaki örnekler cURL, JavaScript ve Python içindir.
/api/scan-dependencieshttps://www.apipick.comCheck open-source packages against the OSV.dev vulnerability database
packagesarrayzorunluUp 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
}Gerçek Dünya Kullanım Senaryoları İçin Tasarlandı
Sürüm kapıları
Herhangi bir bağımlılık CVSS eşiğini aştığında derlemeyi başarısız kılın. Sayısal puan sayesinde politika, metin eşleştirme yerine tek satırlık bir sayı karşılaştırmasına dönüşür.
Kodlama ajanları
Bir ajan, sürümü manifest dosyasına yazmadan önce denetlesin ve aynı yanıtta düzeltilmiş sürümü önersin.
Lockfile denetimleri
Tüm manifesti 50'lik gruplar hâlinde gönderin ve CI içinde tarayıcı çalıştırmadan her servis için tek bir önem derecesi özeti alın.
Tedarikçi durum tespiti
Sözleşme imzalamadan önce üçüncü tarafın beyan ettiği bağımlılık listesini kamuya açık bildirimlerle karşılaştırarak, kaynak gösterebileceğiniz verilerle puanlayın.
Yanıt alanları
| Alan | Tür | Açıklama |
|---|---|---|
| summary.vulnerable_packages | integer | Gönderilen paketlerden kaçının en az bir bildirimi var |
| summary.by_severity | object | critical / high / medium / low / none / unknown kırılımında bildirim sayıları |
| summary.highest_cvss_score | number | null | Tüm taramadaki en yüksek CVSS temel puanı |
| results[].vulnerable | boolean | Bu paket sürümünün geri çekilmemiş bir bildirimi olup olmadığı |
| results[].vulnerabilities[].id | string | OSV bildirim kimliği, örn. GHSA-35jh-r3h4-6jhm |
| results[].vulnerabilities[].cve | string | null | Varsa CVE takma adı |
| results[].vulnerabilities[].severity | string | CRITICAL, HIGH, MEDIUM, LOW, NONE veya UNKNOWN |
| results[].vulnerabilities[].cvss_score | number | null | Bildirimin vektöründen hesaplanan CVSS v3.1 temel puanı |
| results[].vulnerabilities[].cwe_ids | string[] | Bildirime ait CWE zafiyet sınıflandırmaları |
| results[].vulnerabilities[].fixed_versions | string[] | Bu paketin, bildirimi gideren sürümleri |
| results[].error | string | null | Yalnızca o paket denetlenemediğinde doldurulur; diğerleri yine de döner |
| credits_used | integer | Bu istek için düşülen kredi |
| remaining_credits | integer | Hesabınızda kalan kredi |
Rate limit'ler
Sınırlama, API anahtarı başına ve 60 saniyelik kayan pencere ile uygulanır. Sınıra ulaştığınızda Retry-After başlığıyla birlikte temiz bir 429 alırsınız.
20req/min
API anahtarı başına, endpoint başına. 60 saniyelik kayan pencere.
3concurrent
API anahtarı başına maksimum eşzamanlı işlemdeki istek sayısı.
X-RateLimit-LimitDakika başına izin verilen maksimum istek sayısıX-RateLimit-RemainingMevcut penceredeki kalan istek sayısıX-RateLimit-ResetMevcut pencere sıfırlanana kadarki saniyeRetry-AfterYeniden denemeden önce beklenecek saniye (yalnızca 429'da)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
}Veri kaynağı ve lisans
Bildirimler, Google'ın açık güvenlik açığı veritabanı OSV.dev'den gelir ve CC-BY-4.0 ile yayımlanır. OSV; GitHub Advisory Database'i, Go güvenlik açığı veritabanını, RustSec'i, PyPA'yı ve başlıca dağıtımların güvenlik takipçilerini tek bir şemada birleştirir. Biz buna CVSS temel puanı hesabını ve paket bazlı özeti ekliyoruz.
Sıkça Sorulan Sorular
S: Güvenlik açığı verileri nereden geliyor?
C: Google'ın açık güvenlik açığı veritabanı OSV.dev'den. GitHub Advisory Database'i, Go güvenlik açığı veritabanını, RustSec'i, PyPA'yı ve dağıtımların güvenlik takipçilerini tek şemada birleştirip CC-BY-4.0 ile yayımlar. Bildirimler genellikle yayımlanmalarından birkaç saat sonra erişilebilir olur.
S: CVSS puanı nasıl hesaplanıyor?
C: OSV bildirimleri CVSS vektör dizesini taşır ama sayıyı taşımaz. Biz o vektörden resmî formülle CVSS v3.1 temel puanını hesaplıyoruz; böylece doğrudan eşik koyabileceğiniz bir değer elde ediyorsunuz. Bir bildirimde v3 vektörü yoksa (yalnızca v4 varsa ya da ekosistem bildirimi vektör içermiyorsa) cvss_score null olur ve severity, yayımcının kendi derecelendirmesine döner.
S: Tüm bir lockfile'ı tarayabilir miyim?
C: Evet — kendi tarafınızda ayrıştırın ve çağrı başına en fazla 50 paket gönderin. Kaç paket taşırsa taşısın bir çağrı 5 kredidir; dolayısıyla 50'lik bir grup paket başına 0,1 krediye gelir. Daha büyük manifestleri 50'lik gruplara bölün.
S: Sürüm aralıkları destekleniyor mu?
C: Hayır. Lockfile'ınızda göründüğü biçimiyle kurulu tam sürümü gönderin (^4.17.0 değil, 4.17.15). OSV, bir sürümün etkilenip etkilenmediğine karar vermek için aralıkları somut bir sürümle karşılaştırır; bu nedenle girdi olarak verilen bir aralığın tek bir yanıtı yoktur.
S: Bir paketin sorgusu başarısız olursa ne olur?
C: Tarama yine de döner. O paket bir error alanı taşır ve özet sayımlarının dışında kalır; diğer tüm paketler normal biçimde raporlanır. Yanıt ayrıca packages_failed alanını ayarlar, böylece özetin eksik olduğunu bilirsiniz.