[ セキュリティ · サプライチェーン ]● 5 クレジット · 20 回/分

依存パッケージ 脆弱性スキャン API

最大 50 件のオープンソース依存パッケージを 1 回の呼び出しで 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 のしきい値を超えたらビルドを失敗させます。数値スコアがあるため、ポリシーは文字列照合ではなく一行の数値比較で済みます。

🤖

コーディングエージェント

エージェントがマニフェストにバージョンを書き込む前に照会し、同じやり取りの中で修正済みバージョンを提案できます。

📋

ロックファイル監査

マニフェスト全体を 50 件ずつに分けて送信すれば、CI でスキャナーを動かさずに、サービスごとの深刻度サマリーが得られます。

🔍

取引先デューデリジェンス

契約前に、第三者が申告した依存パッケージ一式を公開アドバイザリと突き合わせ、出典を示せるデータで評価します。

レスポンスのフィールド

フィールド説明
summary.vulnerable_packagesinteger送信したパッケージのうち、アドバイザリが 1 件以上該当した数
summary.by_severityobjectcritical / high / medium / low / none / unknown 別のアドバイザリ件数
summary.highest_cvss_scorenumber | nullスキャン全体で最も高い CVSS 基本値
results[].vulnerablebooleanこのバージョンに撤回されていないアドバイザリがあるかどうか
results[].vulnerabilities[].idstringOSV のアドバイザリ ID(例: 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秒のスライディングウィンドウです。上限に達すると、Retry-Afterヘッダー付きのクリーンな429が返されます。

リクエストレート

20req/min

APIキー単位・エンドポイント単位。60秒のスライディングウィンドウ。

同時実行数

3concurrent

APIキーごとの同時進行リクエストの最大数。

レスポンスヘッダー
X-RateLimit-Limit1分あたりに許可される最大リクエスト数
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、主要ディストリビューションのセキュリティトラッカーを単一のスキーマに統合しています。当社はそこに CVSS 基本値の算出とパッケージ単位の集計を加えています。

よくある質問

Q: 脆弱性データの出典はどこですか?

A: Google のオープン脆弱性データベース OSV.dev です。GitHub Advisory Database、Go 脆弱性データベース、RustSec、PyPA、各ディストリビューションのセキュリティトラッカーを単一のスキーマに統合し、CC-BY-4.0 で公開しています。新しいアドバイザリは通常、公開から数時間以内に参照できます。

Q: CVSS スコアはどのように算出していますか?

A: OSV のアドバイザリには CVSS のベクター文字列は含まれますが、数値は含まれません。当社はそのベクターから公式の計算式で CVSS v3.1 基本値を算出するため、そのまましきい値判定に使える数値が得られます。v3 のベクターがないアドバイザリ(v4 のみ、あるいはベクターを持たないエコシステム由来のもの)では cvss_score は null となり、severity は公開元自身の評価にフォールバックします。

Q: ロックファイル全体をスキャンできますか?

A: はい。お客様側でパースしたうえで、1 回の呼び出しにつき最大 50 件を送信してください。パッケージ数にかかわらず 1 回 5 クレジットなので、50 件なら 1 件あたり 0.1 クレジットです。それより大きいマニフェストは 50 件ずつに分割してください。

Q: バージョン範囲には対応していますか?

A: 対応していません。ロックファイルに記載されているとおりの、インストール済みの正確なバージョンを送信してください(^4.17.0 ではなく 4.17.15)。OSV は具体的なバージョンを影響範囲と突き合わせて判定するため、範囲を入力しても答えは一意に定まりません。

Q: 1 件のパッケージの照会が失敗したらどうなりますか?

A: スキャン結果はそのまま返ります。該当パッケージには error フィールドが付き、サマリーの集計からは除外されますが、他のパッケージは通常どおり報告されます。レスポンスには packages_failed も設定され、集計が不完全であることが分かります。