これが役に立つ背景
NVD(National Vulnerability Database)は NIST(米国立標準技術研究所)が運営する CVE 脆弱性情報の公式データベースです。CVE 番号から「説明・CVSS スコア・影響を受けるバージョン・修正バージョン・参照 URL」までを構造化された JSON で取得できる REST API が公開されています。
未認証でも API は使えますが、rate limit が 5 リクエスト/30 秒と厳しく、検出された CVE を一括で照会したり、CI/CD パイプラインに組み込む用途では詰まります。無料の API key を取得するだけで、上限が 50 リクエスト/30 秒(10 倍)に緩和されます。
役立つシーン:
- 情シス・セキュリティ担当: 自社環境で検出された脆弱性一覧を NVD に問い合わせ、CVSS スコア順にソートして優先度判断に使う
- SBOM 運用: ソフトウェア部品表を NVD と自動突合し、影響を受けるパッケージのパッチ計画を立てる
- ブログ・記事執筆: 引用した CVE が実在するか、CVSS スコアが正確かを自動検証(当ブログでも記事レビュー工程で活用しています)
- AI エージェント連携: LLM 駆動のセキュリティアシスタントが、二次メディアではなく一次データから脆弱性情報を取得
手順
所要時間は約 5 分です。
1. 申請フォームを開く: NVD API Key 申請ページ にアクセスします。
2. 必要事項を入力して Submit: 個人利用であれば Organization Type は「Personal Use / Not Listed」で問題ありません。Terms of Use を末尾までスクロールして同意チェックを入れます。

3. 確認メールを受信: 数分以内に nvd-noreply@nist.gov から「Request for NVD API Key」というメールが届きます。本文には認証用の URL と UUID(一回限りの認証コード)が含まれています。


5. キー生成中の画面で待機: 30〜60 秒ほどで生成・検証が完了します。この画面はキー生成完了まで閉じないでください。

6. API Key を取得: 「Validation complete.」と表示されると、その下に発行された API Key(UUID 形式の文字列)が表示されます。これをコピーして安全に保管します。

サンプル
取得した API key を .env に保存してから利用するのがおすすめです。
NVD_API_KEY=028ef843-XXXX-XXXX-XXXX-XXXXXXXXXXXX
curl で 1 件取得:
curl -s "https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2026-33626" \
-H "apiKey: $NVD_API_KEY" \
| jq '.vulnerabilities[0].cve.descriptions[0].value'
Python で取得:
import os
import requests
from dotenv import load_dotenv
load_dotenv()
r = requests.get(
"https://services.nvd.nist.gov/rest/json/cves/2.0",
params={"cveId": "CVE-2026-33626"},
headers={"apiKey": os.environ["NVD_API_KEY"]},
timeout=30,
)
cve = r.json()["vulnerabilities"][0]["cve"]
print(cve["id"], cve["descriptions"][0]["value"][:200])
応答 JSON には CVSS スコア、影響を受ける CPE(製品識別子)、修正バージョン、参照 URL などが構造化された形で含まれます。具体的なフィールドは CVE API ドキュメント を参照してください。
注意事項
- API key は秘密情報: GitHub などの公開リポジトリにコミットしないでください。
.envに保存し、.gitignoreで除外するのが基本です - 新キー発行で旧キーは無効化: キーを紛失した場合は再申請できますが、新キー発行と同時に古いキーは deactivate されます。CI/CD 等に埋め込んでいる場合は同時に差し替えが必要です
- アクティベーション期限: 申請から 7 日以内に認証を完了しないと無効化され、再申請が必要になります
- rate limit を超えた場合: 50 リクエスト/30 秒を超えると HTTP 429 や 403 が返ります。一括処理する場合は
time.sleep(0.6)程度を挟むか、ジッター付きの retry を実装します - 商用利用: NVD のデータを自社製品やサービスに再配布する場合は Terms of Use を確認してください。研究・社内運用目的での利用は基本的に問題ありません
関連/参考リンク
- Request an API Key — NVD(申請フォーム)
- NVD Developer Portal
- CVE API ドキュメント
- NVD Terms of Use
- CISA KEV カタログ(NVD と組み合わせて優先順位判定に使う)




コメント