[ 資安 · 供應鏈 ]● 5 點數 · 20 次/分鐘

相依性 漏洞掃描 API

一次呼叫即可對最多 50 個開源相依套件執行 OSV.dev 檢查,回傳 CVE 編號、計算得出的 CVSS 基礎分數、CWE 分類,以及修補每則公告的確切版本。

OSV.dev 漏洞公告CVSS v3.1 評分13 個生態系
auth · x-api-key

還沒有 API 金鑰?

登入帳戶以建立並管理您的 API 金鑰。

[ 02 · integrate ]

整合指南

複製程式碼片段,替換你的 API 金鑰,執行即可。適用於任何 HTTP 用戶端——下方提供 cURL、JavaScript 與 Python 範例。

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

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

參數
packagesarray必填

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

為實際使用情境打造

🚦

發布關卡

當任一相依套件超過設定的 CVSS 門檻時中斷建置。有了數值分數,政策就是一行數值比較,不必再去比對字串。

🤖

程式開發代理

讓代理在把某個版本寫進相依清單前先行查核,並在同一輪回應中建議應升級到的修補版本。

📋

Lockfile 稽核

把整份相依清單以 50 個為一批送出,為每個服務取得一份依嚴重程度彙總的報告,不必在 CI 中另外執行掃描器。

🔍

供應商盡職調查

簽約前以可引用的公開漏洞資料,為第三方申報的相依清單進行風險評分。

回應欄位

欄位類型說明
summary.vulnerable_packagesinteger所送出的套件中,至少命中一則漏洞公告的數量
summary.by_severityobject依 critical / high / medium / low / none / unknown 分級的公告數量
summary.highest_cvss_scorenumber | null本次掃描中出現的最高 CVSS 基礎分數
results[].vulnerableboolean此版本是否存在尚未撤回的漏洞公告
results[].vulnerabilities[].idstringOSV 公告編號,例如 GHSA-35jh-r3h4-6jhm
results[].vulnerabilities[].cvestring | null對應的 CVE 編號(若有)
results[].vulnerabilities[].severitystringCRITICAL、HIGH、MEDIUM、LOW、NONE 或 UNKNOWN
results[].vulnerabilities[].cvss_scorenumber | null依公告中的向量字串計算出的 CVSS v3.1 基礎分數
results[].vulnerabilities[].cwe_idsstring[]該公告對應的 CWE 弱點分類
results[].vulnerabilities[].fixed_versionsstring[]可修補該公告的本套件版本
results[].errorstring | null此套件單獨查詢失敗時出現;其餘套件仍會正常回傳
credits_usedinteger本次請求扣除的點數
remaining_creditsinteger您帳戶中剩餘的點數
[ 03 · limits ]

速率限制

限流以 API 金鑰計,採用 60 秒滑動視窗。觸發限制時會回傳乾淨的 429,並帶 Retry-After 回應標頭。

請求速率

20req/min

以 API 金鑰、以端點計。60 秒滑動視窗。

並行

3concurrent

每個 API 金鑰同時進行中的最大請求數。

回應標頭
X-RateLimit-Limit每分鐘允許的最大請求數
X-RateLimit-Remaining目前視窗內剩餘的請求數
X-RateLimit-Reset目前視窗重設前的秒數
Retry-After重試前需等待的秒數(僅在 429 時)
● 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
}

資料來源與授權

漏洞公告來自 Google 的開源漏洞資料庫 OSV.dev,以 CC-BY-4.0 授權發布。OSV 將 GitHub Advisory Database、Go 漏洞資料庫、RustSec、PyPA 以及各主要發行版的安全追蹤資料庫整合為同一套 schema。我們在此之上加上 CVSS 基礎分數計算與逐套件彙總。

常見問題

問: 漏洞資料從何而來?

答: 來自 Google 的開源漏洞資料庫 OSV.dev。它將 GitHub Advisory Database、Go 漏洞資料庫、RustSec、PyPA 以及各發行版的安全追蹤資料庫彙整為同一套 schema,並以 CC-BY-4.0 授權發布。新公告通常在發布後數小時內即可查得。

問: CVSS 分數是怎麼算出來的?

答: OSV 公告只帶 CVSS 向量字串,不帶數值。我們依官方公式從該向量計算 CVSS v3.1 基礎分數,因此你拿到的是可直接用來設門檻的數字。若某則公告沒有 v3 向量(僅有 v4,或某些生態系公告本身未提供),cvss_score 為 null,severity 則回退至發布方自己給的評級。

問: 可以掃描整份 lockfile 嗎?

答: 可以 —— 在你這端解析後,每次最多送出 50 個套件。無論一次帶多少個,單次呼叫都是 5 點數,因此 50 個一批相當於每個套件 0.1 點數。相依更多時以 50 個為一批拆分即可。

問: 支援版本範圍嗎?

答: 不支援。請依 lockfile 中的寫法送出確切的已安裝版本(4.17.15,而非 ^4.17.0)。OSV 是拿具體版本去比對受影響範圍來判定的,因此傳入範圍本身並沒有唯一答案。

問: 如果其中一個套件查詢失敗會怎樣?

答: 掃描仍會回傳結果。該套件會帶上 error 欄位並自彙總計數中排除,其餘套件一切照常。回應另會帶上 packages_failed,讓你知道這份彙總並不完整。