CVEとは?脆弱性に割り当てられる脆弱性には一意のIDを解説

記事サムネイル

 この記事では、SCAPの構成要素として紹介したCVE(Common Vulnerability Exposure)について、管理団体の話やAPIの話などを中心に解説していきます。

実践的セキュリティスクール「セキュ塾」で、この記事の執筆者でもあり「OSINT実践ガイド」の著者でもある「面和毅」が主講師を務める「脅威インテリジェンス育成コース」の2024年11月2日より開講中!こちらの講座はいつからでも受講を開始できる講座になっておりますので、ぜひチェックしてみてください!

CVEとは

クエスチョンマーク

  脆弱性には一意のCVE(Common Vulnerability Exposure)のIDが割り当てられます。CVE-IDの形式は「CVE-”年(YYYY)”-”(番号)”」という形で割り振られています。

 これらのCVE-IDはCNAがユニークな番号で発行し、「CVE Board」が中心になって管理しています。

CVE Boardと組織の構造

 CVE-IDは、米国の非営利団体であるMITREが事務局となっている「CVE Board」が中心になって管理されています。IDの付与はTopレベル RootがMITREと米国CISA(Cybersecurity and Infrastructure Security Agency ): アメリカ合衆国サイバーセキュリティ・社会基盤安全保障庁」となるツリー構造の組織で行われ、Microsoft、Google、Red HatなどのIDを採番できる事ができるベンダー(CVE Numbering Authority (CNA))がそれぞれの製品の個別の脆弱性にIDを割り当てていきます。具体的な組織図は下記の様になっています。

画像はCVE: Structureから引用

組織図の説明は下記の様になります。

  • CVE BoardCVE Programを運用して戦略を決定します。事務局 (現在はMITRE社) はインフラの維持を行います。CVE Boardと同列にCVE Working Group(特定の作業を行うWGでCVE Boardにより作成される)があります。
  • CVE-IDの割り当てとCVEレコードの公開は、CVE Boardによって定義されたツリー内で行われます。ツリー内では、TL-RootCVE Boardに直接報告し、ツリー内のRoot/CNAを管理しています。現在CVE Programには、CISAMITREの 2 つのTL-Rootがあります。
  • ツリー内はRootによって管理され、実際の運用 (ID の割り当てやレコードの公開など)はCNAによって実行されます。
  • MITRE TL-Rootツリーには、4 つのRoot(Google・INCIBE・JPCERT/CC・Red Hat)と複数の CNA、1つのCNA-LRが含まれています。
  • ADPは、CNAによって公開されたCVEレコードに関連情報 (リスクスコア・リファレンス・脆弱性の特性・翻訳など) を追加しています。

下記は上の説明で登場する用語を用語集から抜き取ったものです。

上の説明にもありますが、図の右下を見るとJPCERT/CCがRootになっているのがわかります。

CVEレコードの参照(cve.org)

 CVEレコードの参照は、https://www.cve.org/ から行う事ができます。

https://cve.orgのスナップショット

上の窓にCVE-IDを入れることで、そのCVE-IDに紐づけられたCVEレコードを見る事ができます。

CVE-2024-6387(通称「regreSSHion」)の確認

例として、CVE-2024-6387(通称「regreSSHion」)という、OpenSSHの脆弱性を見てみましょう。

CVE-2024-6387を入力

下記のような情報が出てきます。CNAなどは既に解説した通りです。CVSS, CWE, SSVCなどは別の記事で纏めます。ちなみに以前はCVSSはNVDでしか見られませんでしたが、最近はCNAが登録したCVSSに関しては下記のようにcve.orgから見る事ができます。

https://www.cve.org/CVERecord?id=CVE-2024-6387
https://www.cve.org/CVERecord?id=CVE-2024-6387
https://www.cve.org/CVERecord?id=CVE-2024-6387
https://www.cve.org/CVERecord?id=CVE-2024-6387

CVE情報の取得方法(API)

 cve.orgはDBへのアクセスとしてAPIを提供しています。リンク先に基本的な使い方は書いてあります。出力はjsonフォーマットになります。

https://cveawg.mitre.org/api-docs/

GET/POSTなどの使い方の詳細に「使用できるユーザ」が書いてあります。例えばPOSTはCNAやSecretariatのみが使用できます。それぞれのツリーを展開すると、APIの使い方が詳しく載っています。

https://cveawg.mitre.org/api-docs/#/CVE%20ID/cveIdGetFiltered

APIを使用したCVE情報取得のサンプル

テストとして登録していないユーザでも使用できる

  • GET {server_url}/cve-id/{cve_id}

を使用してみましょう(前述の図の黄色い枠線の部分です)。例としては引き続き「CVE-2024-6387」を使用します。Debian(ホスト名blog)上のcurlコマンドとjqコマンドを使用していますが、Ubuntuでも同様の方法で出来ると思います。

サーバ名が「https://cveawg.mitre.org/api」なので、curlとjqを使って

「curl -H “Accept: application/json” -H “Content-type: application/json” -X GET https://cveawg.mitre.org/api/cve-id/CVE-2024-6387|jq .」

を実行します(jqの後に空白とドットがあります)。

curl -H “Accept: application/json” -H “Content-type: application/json” -X GET https://cveawg.mitre.org/api/cve-id/CVE-2024-6387|jq .

となります。

CVEの取得方法(DB)

 CVEのリスト全てをダウンロードする方法も用意されています。JSON形式で圧縮されたファイルで、CVE List Downloadsからダウンロードできます。こちらは毎日の深夜(GMT)に更新されています。

展開すると、下記のような構造になっています。

main.zipを展開すると、このような構造(cvelistV5-main以下)になっている。

2024/10/07時点で大体2.6GBありますので、容量には気をつけてください。

CVEの更新・登録情報(X: 旧Twitter)

 CVEの更新・登録を逐次伝えてくれるアカウント「@CVEnew」も公式から用意されています。

脆弱性情報の最新動向を追いかけたい場合には、こちらのアカウントをフォローすると良いと思います。ただし、CVE-IDの新規登録数は2024年は平均で3,000件/月なので、1日あたり平均100件ぐらいが来ることになり、フィードが見にくくなりますので専用のアカウントでフォローするのが良いと思います。

実践的セキュリティスクール「セキュ塾」で、この記事の執筆者でもあり「OSINT実践ガイド」の著者でもある「面和毅」が主講師を務める「脅威インテリジェンス育成コース」の2024年11月2日より開講中!こちらの講座はいつからでも受講を開始できる講座になっておりますので、ぜひチェックしてみてください!

参考情報

コメント