[ güvenlik · tedarik zinciri ]● 5 kredi · dakikada 20 istek

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.

OSV.dev bildirimleriCVSS v3.1 ile puanlandı13 ekosistem
auth · x-api-key

API key'iniz yok mu?

API key'lerinizi oluşturmak ve yönetmek için hesabınızda oturum açın.

[ 02 · integrate ]

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.

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

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

parametreler
packagesarrayzorunlu

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 · yanıt
{
  "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ı

AlanTürAçıklama
summary.vulnerable_packagesintegerGönderilen paketlerden kaçının en az bir bildirimi var
summary.by_severityobjectcritical / high / medium / low / none / unknown kırılımında bildirim sayıları
summary.highest_cvss_scorenumber | nullTüm taramadaki en yüksek CVSS temel puanı
results[].vulnerablebooleanBu paket sürümünün geri çekilmemiş bir bildirimi olup olmadığı
results[].vulnerabilities[].idstringOSV bildirim kimliği, örn. GHSA-35jh-r3h4-6jhm
results[].vulnerabilities[].cvestring | nullVarsa CVE takma adı
results[].vulnerabilities[].severitystringCRITICAL, HIGH, MEDIUM, LOW, NONE veya UNKNOWN
results[].vulnerabilities[].cvss_scorenumber | nullBildirimin vektöründen hesaplanan CVSS v3.1 temel puanı
results[].vulnerabilities[].cwe_idsstring[]Bildirime ait CWE zafiyet sınıflandırmaları
results[].vulnerabilities[].fixed_versionsstring[]Bu paketin, bildirimi gideren sürümleri
results[].errorstring | nullYalnızca o paket denetlenemediğinde doldurulur; diğerleri yine de döner
credits_usedintegerBu istek için düşülen kredi
remaining_creditsintegerHesabınızda kalan kredi
[ 03 · limits ]

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.

istek hızı

20req/min

API anahtarı başına, endpoint başına. 60 saniyelik kayan pencere.

eşzamanlılık

3concurrent

API anahtarı başına maksimum eşzamanlı işlemdeki istek sayısı.

yanıt başlıkları
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 saniye
Retry-AfterYeniden denemeden önce beklenecek saniye (yalnızca 429'da)
● 429 · çok fazla istek
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.