[ ความปลอดภัย · ห่วงโซ่อุปทาน ]● 5 เครดิต · 20 คำขอ/นาที

สแกนช่องโหว่ ของ dependency API

ตรวจสอบ dependency โอเพนซอร์สได้สูงสุด 50 รายการกับ OSV.dev ในการเรียกครั้งเดียว คืนค่ารหัส CVE ที่เกี่ยวข้อง คะแนนพื้นฐาน CVSS ที่คำนวณแล้ว รหัส CWE และเวอร์ชันที่แก้ไขคำเตือนแต่ละรายการอย่างแม่นยำ

คำเตือนจาก OSV.devให้คะแนนด้วย CVSS v3.113 ระบบนิเวศ
auth · x-api-key

ยังไม่มี API Key?

เข้าสู่ระบบบัญชีของคุณเพื่อสร้างและจัดการ API Key

[ 02 · integrate ]

คู่มือการผสานรวม

คัดลอกสนิปเพ็ต แทนที่ API key ของคุณ แล้วรัน ใช้ได้กับ HTTP client ทุกตัว — ตัวอย่างด้านล่างเป็น 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 · 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
}

สร้างมาสำหรับกรณีการใช้งานจริง

🚦

การกั้นก่อนปล่อยเวอร์ชัน

ให้การบิลด์ล้มเหลวทันทีที่ dependency ใดข้ามเกณฑ์ CVSS เมื่อมีคะแนนเป็นตัวเลข นโยบายก็เหลือเพียงการเปรียบเทียบตัวเลขบรรทัดเดียว แทนการจับคู่ข้อความ

🤖

เอเจนต์เขียนโค้ด

ให้เอเจนต์ตรวจสอบเวอร์ชันก่อนเขียนลงในไฟล์ประกาศ dependency แล้วเสนอเวอร์ชันที่แก้ไขแล้วในคำตอบเดียวกัน

📋

การตรวจสอบ lockfile

ส่งไฟล์ประกาศทั้งไฟล์เป็นชุดละ 50 รายการ แล้วรับสรุปตามระดับความรุนแรงหนึ่งชุดต่อหนึ่งบริการ โดยไม่ต้องรันตัวสแกนใน CI

🔍

การตรวจสอบสถานะผู้ขาย

ประเมินรายการ dependency ที่คู่สัญญาแจ้งไว้เทียบกับคำเตือนสาธารณะก่อนลงนาม ด้วยข้อมูลที่คุณอ้างอิงได้

ฟิลด์ในผลลัพธ์

ฟิลด์ประเภทคำอธิบาย
summary.vulnerable_packagesintegerจำนวนแพ็กเกจที่ส่งไปซึ่งมีคำเตือนอย่างน้อยหนึ่งรายการ
summary.by_severityobjectจำนวนคำเตือนแยกตาม critical / high / medium / low / none / unknown
summary.highest_cvss_scorenumber | nullคะแนนพื้นฐาน CVSS สูงสุดของการสแกนทั้งหมด
results[].vulnerablebooleanแพ็กเกจเวอร์ชันนี้มีคำเตือนที่ยังไม่ถูกเพิกถอนหรือไม่
results[].vulnerabilities[].idstringรหัสคำเตือนของ OSV เช่น 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 ]

Rate limit

การจำกัดอัตราเป็นแบบต่อ API key ในหน้าต่างเลื่อน 60 วินาที เมื่อถึงขีดจำกัดคุณจะได้ 429 ที่สะอาดพร้อม header Retry-After

อัตราการร้องขอ

20req/min

ต่อ API key ต่อ endpoint หน้าต่างเลื่อน 60 วินาที

การทำงานพร้อมกัน

3concurrent

จำนวนคำขอที่กำลังดำเนินการพร้อมกันได้สูงสุดต่อ API key

response headers
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
}

แหล่งข้อมูลและสัญญาอนุญาต

คำเตือนมาจาก 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 จะย้อนไปใช้ระดับที่ผู้เผยแพร่กำหนดเอง

ถาม: สแกน lockfile ทั้งไฟล์ได้ไหม

ตอบ: ได้ — แยกวิเคราะห์ไฟล์ที่ฝั่งคุณแล้วส่งได้สูงสุด 50 แพ็กเกจต่อการเรียกหนึ่งครั้ง การเรียกหนึ่งครั้งคิด 5 เครดิตไม่ว่าจะมีกี่แพ็กเกจ ดังนั้นชุดละ 50 รายการจึงเท่ากับ 0.1 เครดิตต่อแพ็กเกจ หากไฟล์ใหญ่กว่านั้นให้แบ่งเป็นชุดละ 50

ถาม: รองรับช่วงเวอร์ชันหรือไม่

ตอบ: ไม่รองรับ กรุณาส่งเวอร์ชันที่ติดตั้งจริงตามที่ปรากฏใน lockfile ของคุณ (4.17.15 ไม่ใช่ ^4.17.0) OSV เทียบช่วงเวอร์ชันกับเวอร์ชันที่ระบุชัดเพื่อตัดสินว่าได้รับผลกระทบหรือไม่ การส่งช่วงเข้ามาจึงไม่มีคำตอบเดียวที่แน่นอน

ถาม: ถ้าการค้นหาแพ็กเกจหนึ่งล้มเหลวจะเกิดอะไรขึ้น

ตอบ: ผลการสแกนยังคืนค่าตามปกติ แพ็กเกจนั้นจะมีฟิลด์ error และถูกตัดออกจากตัวเลขสรุป ส่วนแพ็กเกจอื่นทั้งหมดยังรายงานตามปกติ นอกจากนี้ผลลัพธ์จะตั้งค่า packages_failed เพื่อให้คุณทราบว่าบทสรุปยังไม่ครบถ้วน