この記事では、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 BoardがCVE Programを運用して戦略を決定します。事務局 (現在はMITRE社) はインフラの維持を行います。CVE Boardと同列にCVE Working Group(特定の作業を行うWGでCVE Boardにより作成される)があります。
- CVE-IDの割り当てとCVEレコードの公開は、CVE Boardによって定義されたツリー内で行われます。ツリー内では、TL-Root がCVE Boardに直接報告し、ツリー内のRoot/CNAを管理しています。現在CVE Programには、CISAとMITREの 2 つのTL-Rootがあります。
- ツリー内はRootによって管理され、実際の運用 (ID の割り当てやレコードの公開など)はCNAによって実行されます。
- MITRE TL-Rootツリーには、4 つのRoot(Google・INCIBE・JPCERT/CC・Red Hat)と複数の CNA、1つのCNA-LRが含まれています。
- ADPは、CNAによって公開されたCVEレコードに関連情報 (リスクスコア・リファレンス・脆弱性の特性・翻訳など) を追加しています。
下記は上の説明で登場する用語を用語集から抜き取ったものです。
- CVE Program
- 公開された脆弱性を特定してカタログ化する、国際的なコミュニティ活動による取り組み。
- CVE Board
- CVE Programの戦略的な方向性やガバナンス・運用方法・ポリシー・ルールを担当する組織。
- CVE Working Group
- CVEのステークホルダーや一般の人々と適宜協力して目的を達成するために、CVE Boardによって作成および管理される組織。
- Secretariat(事務局)
- CVE Programによってインフラストラクチャを開発・提供・維持し、CVE BoardやCVE Working Group、その他の管理およびロジスティックスサポートを提供する組織。現在はMITREが担っています。
- Authorized Data Publisher (ADP)
- CNAによって公開された CVEレコードのコンテンツに関連情報 (リスクスコア・リファレンス・脆弱性の特性・翻訳など) を追加する、特定のスコープと責任を持つ認定エンティティ。現在はCISA(Cybersecurity and Infrastructure Security Agency)が担っています。
- Top-Level Root(TL-Root)
- 指定された階層内の最高のRoot。指定された階層内のRootおよびCNAのガバナンスと管理を担当します。現在はCISA(Cybersecurity and Infrastructure Security Agency)とMITREの2つのTL-Rootが存在します。
- Root
- CVE Programで承認された組織であり、階層内でのCNA・CNA-LR・別のRootの勧誘やトレーニング、管理を担当します。
- CNA
- CVE Numbering Authority of Last Resort (CNA-LR)
- CVE-ID
- 公開された脆弱性を識別するユニークな英数字の文字列。
- CVEレコード(CVE Record)
上の説明にもありますが、図の右下を見るとJPCERT/CCがRootになっているのがわかります。
CVEレコードの参照(cve.org)
CVEレコードの参照は、https://www.cve.org/ から行う事ができます。
上の窓にCVE-IDを入れることで、そのCVE-IDに紐づけられたCVEレコードを見る事ができます。
CVE-2024-6387(通称「regreSSHion」)の確認
例として、CVE-2024-6387(通称「regreSSHion」)という、OpenSSHの脆弱性を見てみましょう。
下記のような情報が出てきます。CNAなどは既に解説した通りです。CVSS, CWE, SSVCなどは別の記事で纏めます。ちなみに以前はCVSSはNVDでしか見られませんでしたが、最近はCNAが登録したCVSSに関しては下記のようにcve.orgから見る事ができます。
CVE情報の取得方法(API)
cve.orgはDBへのアクセスとしてAPIを提供しています。リンク先に基本的な使い方は書いてあります。出力はjsonフォーマットになります。
GET/POSTなどの使い方の詳細に「使用できるユーザ」が書いてあります。例えばPOSTはCNAやSecretariatのみが使用できます。それぞれのツリーを展開すると、APIの使い方が詳しく載っています。
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の後に空白とドットがあります)。
となります。
CVEの取得方法(DB)
CVEのリスト全てをダウンロードする方法も用意されています。JSON形式で圧縮されたファイルで、CVE List Downloadsからダウンロードできます。こちらは毎日の深夜(GMT)に更新されています。
展開すると、下記のような構造になっています。
2024/10/07時点で大体2.6GBありますので、容量には気をつけてください。
CVEの更新・登録情報(X: 旧Twitter)
CVEの更新・登録を逐次伝えてくれるアカウント「@CVEnew」も公式から用意されています。
脆弱性情報の最新動向を追いかけたい場合には、こちらのアカウントをフォローすると良いと思います。ただし、CVE-IDの新規登録数は2024年は平均で3,000件/月なので、1日あたり平均100件ぐらいが来ることになり、フィードが見にくくなりますので専用のアカウントでフォローするのが良いと思います。
実践的セキュリティスクール「セキュ塾」で、この記事の執筆者でもあり「OSINT実践ガイド」の著者でもある「面和毅」が主講師を務める「脅威インテリジェンス育成コース」の2024年11月2日より開講中!こちらの講座はいつからでも受講を開始できる講座になっておりますので、ぜひチェックしてみてください!
参考情報
- CVE: Structure
- CVE: CVE Services API
- CVE: CVE List Downloads
- CVE Tweet: https://x.com/CVEnew
コメント