CPE(Common Platform Enumeration)は、システムを構成するハードウェア/ソフトウェアなどを識別するためのユニークな情報です。以前はMITREで管理されていましたが、現在はNISTに移管されています。ここではCPEについて解説します。
実践的セキュリティスクール「セキュ塾」で、この記事の執筆者でもあり「OSINT実践ガイド」の著者でもある「面和毅」が主講師を務める「脅威インテリジェンス育成コース」の2024年11月2日より開講中!こちらの講座はいつからでも受講を開始できる講座になっておりますので、ぜひチェックしてみてください!
CPEとは
CPE(Common Platform Enumeration)は、システムを構成するハードウェア/ソフトウェアなどを識別するためのユニークな情報です。以前はMITREで管理されていましたが、現在はNISTに移管されています。
なお、CPEはここから最新のものがダウンロードできます。こちらは製品が増えると(v2.3, v2.2双方とも)不定期ですが更新されています。
CPEの確認方法
皆様のOSでも、OSのCPE情報を確認する事ができます(OSによって方法は様々ですが)。例えば、Red Hat Enterprise Linux 9では/etc/os-releaseに”CPE_NAME”として記述されています。
CPEのフォーマット
CPEは現在v2.2とv2.3の両方が使われていますが、ほぼv2.3に置き換わっています。ここではCPE v2.3のフォーマットを中心に説明させていただきます。
- 種別
プラットフォームの種別。「o=OS」「h=Hardware」「a=application」などとなる - ベンダー名
ベンダーのドメイン名が記載される。組織名とドメイン名が異なる場合には、ドメイン名が優先される - 製品名
製品名が記載される。スペースを挟む製品の場合には、スペースの代わりに「_」(アンダースコア)が使われる - バージョン
製品のバージョン情報が記載される - アップデート
製品のアップデートバージョンや、サービスパックの情報が記載される - 言語
製品の言語名が(特定したい場合には)記載される
CPEのサンプル
CPEのサイトからOfficial CPE Dictionary v2.3をダウンロードして展開すると、CPEが載ったXMLファイルが得られますので、こちらを見てみます。
例えば、Apache Tomcatのmod_jkは下記(オレンジで囲っている箇所)の様に、各バージョンごとにそれぞれのCPEが定義されています。
下記の様に、Microsoft Windows 11のCPE名も見る事ができます。
また、CiscoなどのハードウェアにもCPE名がそれぞれ付けられています。
CPE名の使われ方
脆弱性のCVE-IDを確認すると、その脆弱性がどのOS/アプリ/ハードウェアに関係するのかを示すため、CPE名が使われています。CPE名はNISTのNVD(National Vulunerability Database)でCVE-ID, CVSSなどと同様に確認する事ができます。
例えば、CVE-2024-6387をNVDで確認するとCPE名として「cpe:2.3:a:openbsd:openssh:..」を確認する事ができます。OpenSSHプログラムはOpenBSDプロジェクトで開発されたものがRed Hat Enterprise Linuxなどで使用されているため、「種別はa(Application), 開発元はOpenBSD, アプリ名はOpenSSHというCPE名のものに影響を及ぼす脆弱性がありました」という事になります。LinuxなどはこのOpenBSDプロジェクトのものを使用していますので、間接的に脆弱性の影響を受けることになります。
一つの脆弱性にCPE名が複数付く事がある
ここで気をつけなくてはならないのが、「一つの脆弱性にCPE名が複数付く事がある」という事です。
例えば、下記はWebGL(Web Graphics Library)の脆弱性(CVE-2023-6856)のため、Firefox・Thunderbird・OSの3種類が「影響を受けるCPE名」として記載されています。
まとめ
今回はCPE名について解説しました。脆弱性情報を読む際の参考にしていただければと思います。
実践的セキュリティスクール「セキュ塾」で、この記事の執筆者でもあり「OSINT実践ガイド」の著者でもある「面和毅」が主講師を務める「脅威インテリジェンス育成コース」の2024年11月2日より開講中!こちらの講座はいつからでも受講を開始できる講座になっておりますので、ぜひチェックしてみてください!
コメント