[ सुरक्षा · आपूर्ति शृंखला ]● 5 क्रेडिट · 20 अनुरोध/मिनट

डिपेंडेंसी भेद्यता स्कैन API

एक ही कॉल में 50 तक ओपन-सोर्स डिपेंडेंसी की जाँच OSV.dev पर करें। CVE उपनाम, गणना किया गया CVSS बेस स्कोर, CWE पहचानकर्ता और हर एडवाइज़री को ठीक करने वाले सटीक संस्करण लौटाता है।

OSV.dev एडवाइज़रीCVSS v3.1 स्कोर सहित13 इकोसिस्टम
auth · x-api-key

API key नहीं है?

अपनी API keys बनाने और मैनेज करने के लिए अपने खाते में साइन इन करें।

[ 02 · integrate ]

इंटीग्रेशन गाइड

एक snippet कॉपी करें, अपनी API key बदलें, रन करें। किसी भी HTTP क्लाइंट में काम करता है — नीचे cURL, JavaScript और Python में उदाहरण।

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

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

parameters
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 · response
{
  "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 सीमा पार करे, बिल्ड को विफल कर दें। संख्यात्मक स्कोर होने से नीति टेक्स्ट मिलान के बजाय एक पंक्ति की संख्या-तुलना बन जाती है।

🤖

कोडिंग एजेंट

एजेंट को किसी संस्करण को मैनिफ़ेस्ट में लिखने से पहले जाँचने दें, और उसी उत्तर में ठीक किया गया संस्करण सुझाने दें।

📋

लॉकफ़ाइल ऑडिट

पूरे मैनिफ़ेस्ट को 50-50 के बैच में भेजें और CI में स्कैनर चलाए बिना हर सेवा के लिए गंभीरता-वार एक सारांश पाएँ।

🔍

विक्रेता ड्यू डिलिजेंस

अनुबंध पर हस्ताक्षर से पहले किसी तीसरे पक्ष द्वारा घोषित डिपेंडेंसी सूची को सार्वजनिक एडवाइज़री के आधार पर आँकें — ऐसे डेटा से जिसका आप संदर्भ दे सकें।

प्रतिक्रिया फ़ील्ड

फ़ील्डप्रकारविवरण
summary.vulnerable_packagesintegerभेजे गए पैकेजों में से कितनों पर कम से कम एक एडवाइज़री है
summary.by_severityobjectcritical / 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इस request के लिए काटे गए credits
remaining_creditsintegerआपके अकाउंट में शेष credits
[ 03 · limits ]

Rate limits

थ्रॉटलिंग प्रति API key है, 60-सेकंड की स्लाइडिंग विंडो। लिमिट पार करने पर आपको Retry-After हेडर के साथ साफ़ 429 मिलता है।

request rate

20req/min

प्रति API key, प्रति endpoint। 60-सेकंड की स्लाइडिंग विंडो।

concurrency

3concurrent

प्रति API key अधिकतम एक साथ चल रहे requests।

response headers
X-RateLimit-Limitप्रति मिनट अनुमत अधिकतम requests
X-RateLimit-Remainingमौजूदा विंडो में शेष requests
X-RateLimit-Resetमौजूदा विंडो रीसेट होने में सेकंड
Retry-Afterपुनः प्रयास से पहले प्रतीक्षा के सेकंड (केवल 429 पर)
● 429 · too many requests
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
}

डेटा स्रोत और लाइसेंस

एडवाइज़री गूगल के खुले भेद्यता डेटाबेस OSV.dev से आती हैं, जो CC-BY-4.0 के अंतर्गत प्रकाशित है। OSV, GitHub Advisory Database, Go भेद्यता डेटाबेस, RustSec, PyPA और प्रमुख डिस्ट्रीब्यूशनों के सुरक्षा ट्रैकरों को एक ही स्कीमा में समेटता है। हम इसमें CVSS बेस स्कोर की गणना और पैकेज-वार सारांश जोड़ते हैं।

अक्सर पूछे जाने वाले प्रश्न

प्र: भेद्यता डेटा कहाँ से आता है?

उ: गूगल के खुले भेद्यता डेटाबेस OSV.dev से। यह GitHub Advisory Database, Go भेद्यता डेटाबेस, RustSec, PyPA और डिस्ट्रीब्यूशनों के सुरक्षा ट्रैकरों को एक स्कीमा में जोड़कर CC-BY-4.0 के अंतर्गत प्रकाशित करता है। एडवाइज़री आम तौर पर प्रकाशन के कुछ ही घंटों में उपलब्ध हो जाती हैं।

प्र: CVSS स्कोर की गणना कैसे होती है?

उ: OSV एडवाइज़री में CVSS वेक्टर स्ट्रिंग होती है, संख्या नहीं। हम उसी वेक्टर से आधिकारिक सूत्र द्वारा CVSS v3.1 बेस स्कोर निकालते हैं, ताकि आपको ऐसा मान मिले जिस पर सीधे सीमा तय की जा सके। जहाँ किसी एडवाइज़री में v3 वेक्टर नहीं होता (केवल v4, या बिना वेक्टर वाली इकोसिस्टम एडवाइज़री), वहाँ cvss_score null रहता है और severity प्रकाशक की अपनी रेटिंग पर लौट आता है।

प्र: क्या मैं पूरी लॉकफ़ाइल स्कैन कर सकता हूँ?

उ: हाँ — उसे अपनी ओर से पार्स करें और प्रति कॉल 50 तक पैकेज भेजें। पैकेजों की संख्या चाहे जो हो, एक कॉल 5 क्रेडिट की होती है, इसलिए 50 का बैच प्रति पैकेज 0.1 क्रेडिट पड़ता है। बड़े मैनिफ़ेस्ट के लिए 50-50 के बैच में बाँट लें।

प्र: क्या संस्करण-श्रेणियाँ समर्थित हैं?

उ: नहीं। जैसा आपकी लॉकफ़ाइल में दर्ज है, ठीक वही इंस्टॉल किया गया संस्करण भेजें (^4.17.0 नहीं, 4.17.15)। OSV यह तय करने के लिए कि कोई संस्करण प्रभावित है या नहीं, श्रेणियों की तुलना एक ठोस संस्करण से करता है, इसलिए इनपुट में दी गई श्रेणी का कोई एक उत्तर नहीं होता।

प्र: यदि किसी एक पैकेज की क्वेरी विफल हो जाए तो क्या होगा?

उ: स्कैन फिर भी लौटता है। उस पैकेज पर error फ़ील्ड आ जाता है और वह सारांश की गणना से बाहर रहता है, जबकि बाकी सभी पैकेज सामान्य रूप से रिपोर्ट होते हैं। प्रतिक्रिया में packages_failed भी सेट होता है ताकि आपको पता चले कि सारांश अधूरा है।