[ keamanan · rantai pasok ]● 5 kredit · 20 permintaan/menit

Pemindaian kerentanan dependensi

Periksa hingga 50 dependensi open source ke OSV.dev dalam satu panggilan. Mengembalikan alias CVE, skor dasar CVSS terhitung, pengenal CWE, serta versi persis yang memperbaiki setiap advisory.

Advisory OSV.devDiberi skor CVSS v3.113 ekosistem
auth · x-api-key

Belum punya API key?

Masuk ke akun Anda untuk membuat dan mengelola API key.

[ 02 · integrate ]

Panduan integrasi

Salin snippet, ganti API key kamu, jalankan. Bekerja di HTTP client mana pun — contoh di bawah dalam cURL, JavaScript, dan Python.

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

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

parameter
packagesarraywajib

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 · respons
{
  "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
}

Dibuat untuk Use Case Dunia Nyata

🚦

Gerbang rilis

Gagalkan build begitu ada dependensi yang melewati ambang CVSS. Dengan skor numerik, kebijakan cukup satu baris perbandingan angka, bukan pencocokan teks.

🤖

Agen pemrograman

Biarkan agen memeriksa sebuah versi sebelum menuliskannya ke manifest, lalu menyarankan versi perbaikannya pada giliran yang sama.

📋

Audit lockfile

Kirim seluruh manifest dalam kelompok 50 dan dapatkan satu ringkasan tingkat keparahan per layanan, tanpa menjalankan pemindai di CI.

🔍

Uji tuntas pemasok

Nilai daftar dependensi yang dinyatakan pihak ketiga terhadap advisory publik sebelum menandatangani, dengan data yang bisa Anda rujuk.

Field respons

FieldTipeDeskripsi
summary.vulnerable_packagesintegerBerapa banyak paket yang dikirim memiliki setidaknya satu advisory
summary.by_severityobjectJumlah advisory menurut critical / high / medium / low / none / unknown
summary.highest_cvss_scorenumber | nullSkor dasar CVSS tertinggi di seluruh pemindaian
results[].vulnerablebooleanApakah versi paket ini punya advisory yang belum ditarik
results[].vulnerabilities[].idstringID advisory OSV, mis. GHSA-35jh-r3h4-6jhm
results[].vulnerabilities[].cvestring | nullAlias CVE bila ada
results[].vulnerabilities[].severitystringCRITICAL, HIGH, MEDIUM, LOW, NONE, atau UNKNOWN
results[].vulnerabilities[].cvss_scorenumber | nullSkor dasar CVSS v3.1 yang dihitung dari vektor advisory
results[].vulnerabilities[].cwe_idsstring[]Klasifikasi kelemahan CWE untuk advisory tersebut
results[].vulnerabilities[].fixed_versionsstring[]Versi paket ini yang menyelesaikan advisory
results[].errorstring | nullTerisi bila paket itu saja gagal diperiksa; sisanya tetap dikembalikan
credits_usedintegerKredit yang dipotong untuk request ini
remaining_creditsintegerKredit yang tersisa di akun kamu
[ 03 · limits ]

Rate limit

Throttling berlaku per API key, jendela geser 60 detik. Jika melewati batas, kamu mendapat 429 yang rapi dengan header Retry-After.

laju request

20req/min

Per API key, per endpoint. Jendela geser 60 detik.

konkurensi

3concurrent

Maksimum request bersamaan yang sedang berjalan per API key.

header respons
X-RateLimit-LimitJumlah maksimum request yang diizinkan per menit
X-RateLimit-RemainingRequest yang tersisa di jendela saat ini
X-RateLimit-ResetDetik sampai jendela saat ini di-reset
Retry-AfterDetik yang harus ditunggu sebelum mencoba lagi (hanya pada 429)
● 429 · terlalu banyak request
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
}

Sumber data dan lisensi

Advisory berasal dari OSV.dev, basis data kerentanan terbuka milik Google, yang diterbitkan dengan lisensi CC-BY-4.0. OSV menyatukan GitHub Advisory Database, basis data kerentanan Go, RustSec, PyPA, serta pelacak keamanan distribusi besar ke dalam satu skema. Kami menambahkan perhitungan skor dasar CVSS dan ringkasan per paket.

Pertanyaan yang Sering Diajukan

T: Dari mana data kerentanannya berasal?

J: Dari OSV.dev, basis data kerentanan terbuka milik Google. OSV menyatukan GitHub Advisory Database, basis data kerentanan Go, RustSec, PyPA, dan pelacak keamanan distribusi ke dalam satu skema, lalu menerbitkannya dengan lisensi CC-BY-4.0. Advisory umumnya tersedia dalam hitungan jam setelah dipublikasikan.

T: Bagaimana skor CVSS dihitung?

J: Advisory OSV memuat string vektor CVSS, tetapi bukan angkanya. Kami menghitung skor dasar CVSS v3.1 dari vektor itu memakai rumus resmi, sehingga Anda memperoleh nilai yang langsung bisa dijadikan ambang. Bila sebuah advisory tidak punya vektor v3 (hanya v4, atau advisory ekosistem tanpa vektor), cvss_score bernilai null dan severity mengikuti penilaian penerbit advisory itu sendiri.

T: Bisakah saya memindai satu lockfile penuh?

J: Bisa — parse di sisi Anda lalu kirim hingga 50 paket per panggilan. Satu panggilan berbiaya 5 kredit berapa pun jumlah paketnya, jadi satu kelompok 50 paket setara 0,1 kredit per paket. Untuk manifest yang lebih besar, pecah menjadi kelompok 50.

T: Apakah rentang versi didukung?

J: Tidak. Kirim versi persis yang terpasang, sebagaimana tertulis di lockfile Anda (4.17.15, bukan ^4.17.0). OSV mencocokkan rentang dengan versi konkret untuk menentukan apakah versi itu terdampak, sehingga rentang sebagai masukan tidak memiliki jawaban tunggal.

T: Apa yang terjadi bila pencarian satu paket gagal?

J: Pemindaian tetap dikembalikan. Paket tersebut membawa field error dan dikeluarkan dari hitungan ringkasan, sementara paket lain dilaporkan seperti biasa. Respons juga menyetel packages_failed agar Anda tahu ringkasannya tidak lengkap.