CVE(Common Vulnerability Exposure)について

記事サムネイル

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

実践的セキュリティスクール「セキュ塾」で、この記事の執筆者でもあり「OSINT実践ガイド」の著者でもある「面和毅」が主講師を務める「脅威インテリジェンス育成コース」の11月2日より開講決定!こちらから「KADOKAWAの一件の脅威インテリジェンスレポート」を閲覧することもできます。

関係する記事

CVE(Common Vulnerability Exposure)とは

  脆弱性には一意の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実践ガイド」の著者でもある「面和毅」が主講師を務める「脅威インテリジェンス育成コース」の11月2日より開講決定!こちらから「KADOKAWAの一件の脅威インテリジェンスレポート」を閲覧することもできます。

参考情報

コメント