Kiểm tra gói phụ thuộc API
Tìm lỗ hổng đã biết (OSV.dev), bản sửa lỗi, bản mới nhất và giấy phép của các gói trong lockfile hoặc manifest: npm, pip, Go, Composer…
Tải lên hoặc dán manifest / lockfile: package.json, package-lock.json (v1–v3), yarn.lock (bản classic và Berry), pnpm-lock.yaml, requirements.txt, poetry.lock, Pipfile.lock, composer.lock / composer.json, go.sum / go.mod, Gemfile.lock hoặc Cargo.lock. Định dạng được nhận diện từ filename hoặc nội dung. Từng gói và phiên bản được đối chiếu với OSV.dev (cơ sở dữ liệu lỗ hổng mở của Google, tổng hợp GitHub Advisory Database, PyPA, Go, RustSec…) theo lô tối đa 1.000 gói.
Mỗi gói có lỗ hổng liệt kê các cảnh báo với mã GHSA / CVE, tóm tắt, mức độ nghiêm trọng (tính từ vector CVSS v3, hoặc mức do cảnh báo tự đánh giá), các phiên bản đã sửa và fixed_in (bản sửa đầu tiên cao hơn bản bạn dùng); upgrade_to là phiên bản thấp nhất sửa được tất cả. Với latest=true, API lấy bản phát hành mới nhất từ npm, PyPI hoặc Packagist cho các gói trực tiếp (hoặc mọi gói nếu file nhỏ). Giấy phép lấy từ lockfile hoặc registry được chuẩn hoá theo SPDX (spdx-correct) và gắn cờ copyleft weak, strong hoặc network.
Với manifest chỉ có khoảng phiên bản (^1.2.3, >=3.0), API kiểm tra phiên bản thấp nhất được phép và đánh dấu version_from_range: hãy gửi lockfile để có kết quả chính xác. Chi tiết cảnh báo được lưu đệm một ngày và lấy tối đa 150 cảnh báo mỗi lần gọi (max_details, tối đa 300). Dữ liệu lỗ hổng: OSV.dev, được ghi nguồn trong mỗi kết quả.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
content | body | string | không | Nội dung manifest / lockfile (hoặc tải file, hoặc gửi body thô). | |
file | body | file | không | File manifest / lockfile tải lên. | |
filename | body | string | không | Tên file để nhận diện định dạng (ví dụ yarn.lock). | |
format | body | string | không | Chỉ định định dạng: package.json, package-lock.json, yarn.lock, pnpm-lock.yaml, requirements.txt, poetry.lock, pipfile.lock, composer.lock, composer.json, go.sum, go.mod, gemfile.lock, cargo.lock. | |
latest | body | boolean | không | false | Lấy thêm phiên bản mới nhất và giấy phép từ npm / PyPI / Packagist. |
include_dev | body | boolean | không | true | Tính cả gói dùng cho phát triển (dev). |
only_vulnerable | body | boolean | không | false | Chỉ liệt kê các gói có lỗ hổng. |
vulns | body | boolean | không | true | Đặt false để bỏ qua kiểm tra OSV.dev (chỉ xem giấy phép / phiên bản). |
max_details | body | number | không | 150 | Số cảnh báo tối đa được lấy chi tiết (0–300). |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/dep-audit" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content":"{\"dependencies\":{\"lodash\":\"4.17.20\"}}","filename":"package.json","latest":true}'const res = await fetch('https://apibox.io.vn/v1/dep-audit', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"content": "{\"dependencies\":{\"lodash\":\"4.17.20\"}}",
"filename": "package.json",
"latest": true
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/dep-audit",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"content": "{\"dependencies\":{\"lodash\":\"4.17.20\"}}", "filename": "package.json", "latest": True},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/dep-audit');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"content":"{\\"dependencies\\":{\\"lodash\\":\\"4.17.20\\"}}","filename":"package.json","latest":true}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"format": "package.json",
"packages_total": 1,
"summary": {
"vulnerable_packages": 1,
"vulnerabilities": 4,
"by_severity": {
"high": 2,
"medium": 2
},
"outdated_packages": 1,
"latest_checked": 1,
"licences": {
"MIT": 1
},
"copyleft_packages": 0
},
"packages": [
{
"name": "lodash",
"version": "4.17.20",
"ecosystem": "npm",
"declared": "4.17.20",
"dev": false,
"direct": true,
"vulnerable": true,
"vulnerabilities": [
{
"id": "GHSA-35jh-r3h4-6jhm",
"aliases": [
"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",
"fixed_versions": [
"4.17.21"
],
"fixed_in": "4.17.21",
"published": "2021-05-06T16:05:51Z",
"url": "https://osv.dev/vulnerability/GHSA-35jh-r3h4-6jhm"
},
{
"id": "GHSA-r5fr-rjxr-66jc",
"aliases": [
"CVE-2026-4800"
],
"summary": "lodash vulnerable to Code Injection via `_.template` imports key names",
"severity": "high",
"cvss_score": 8.1,
"fixed_versions": [
"4.18.0"
],
"fixed_in": "4.18.0",
"url": "https://osv.dev/vulnerability/GHSA-r5fr-rjxr-66jc"
},
"…"
],
"upgrade_to": "4.18.0",
"latest": "4.18.1",
"outdated": true,
"licence": {
"declared": "MIT",
"spdx": "MIT",
"ids": [
"MIT"
],
"copyleft": "none"
}
}
],
"attribution": "Vulnerability data from OSV.dev (https://osv.dev), aggregating GitHub Advisory Database (CC-BY 4.0), PyPA, Go, RustSec and other sources under their licences."
}
Ứng dụng
- Kiểm tra dự án do agency bàn giao trước khi đưa vào vận hành
- Chặn lỗ hổng nhẹ trong CI mà không cần cài công cụ quét
- Liệt kê giấy phép copyleft trong thư viện trước khi phát hành sản phẩm
- Xem gói nào đã cũ và nâng lên bản nào thì hết lỗ hổng
Hỏi đáp
Dữ liệu lỗ hổng lấy từ đâu?
Từ OSV.dev, cơ sở dữ liệu mở do Google vận hành, gộp GitHub Advisory Database, PyPA, Go vulndb, RustSec, RubySec và các nguồn khác. Mỗi kết quả đều có dòng ghi nguồn.
version_from_range nghĩa là gì?
package.json, composer.json và requirements.txt dùng >= chỉ cho biết khoảng phiên bản. API kiểm tra bản thấp nhất mà khoảng đó cho phép; bản bạn cài thực tế có thể mới hơn. Hãy gửi lockfile để có phiên bản chính xác.
Có hỗ trợ pom.xml hay build.gradle không?
Chưa. Hiện hỗ trợ file của npm, yarn, pnpm, pip, Poetry, Pipenv, Composer, Go modules, Bundler và Cargo.
API liên quan
Tạo mã hash
Tính MD5, SHA-1, SHA-256, SHA-384, SHA-512 và CRC32 của chuỗi hoặc file trong một lần gọi, xuất hex hoặc base64, hỗ trợ ký HMAC.
B64Mã hoá / Giải mã
Mã hoá hoặc giải mã chuỗi sang Base64, Base64URL, hex, URL encode, HTML entity, Unicode escape, ROT13 hay nhị phân chỉ với một lần gọi API.
***Tạo mật khẩu
Tạo mật khẩu ngẫu nhiên an toàn bằng CSPRNG (4–256 ký tự, tối đa 100 cái mỗi lần) hoặc kiểm tra độ mạnh, entropy và thời gian bẻ khoá của mật khẩu.