コンテンツにスキップ

EPSSの基礎とスコアの確認方法

公開日:2026年8月30日

はじめに

公開されるCVEは非常に多く、そのすべてに同じ優先度で対応するのは現実的ではありません。

実際の攻撃で悪用された脆弱性を確認するための情報として、CISAのKEV Catalogがあります。一方、KEV Catalogに登録されていなくても、今後悪用される可能性が高い脆弱性は存在します。

そこで、近い将来に悪用される可能性を判断する材料として利用されるのがEPSSです。

この記事では、EPSSの意味、スコアの読み方、運営するFIRSTの位置づけ、スコアの算出方法、APIやGitHubからの確認方法、過去の計算モデルについて記載します。

EPSSとは

EPSSは Exploit Prediction Scoring System の略で、公開されたCVEが今後30日以内に実際の攻撃で悪用される可能性を予測する仕組みです。

各CVEに対して、0から1までの確率としてスコアが毎日公開されます。

例えば、EPSSスコアが0.05の場合は、同程度の特徴を持つ多数の脆弱性のうち、約5%で今後30日以内に悪用活動が観測されると予測していることを意味します。

EPSSはFIRSTの公式サイトで確認ができ、FIRST「Get the Data」にまとめられています。

EPSSを運営するFIRST

EPSSは、FIRSTのEPSS Special Interest Group(EPSS SIG)によって維持されています。スコアの生成に必要なデータ処理や基盤はEmpirical Securityが提供し、結果が無料で公開されています。

FIRSTは Forum of Incident Response and Security Teams の略で、各国のCSIRTやセキュリティ組織が参加する国際的な非営利団体です。

CSIRTは、サイバー攻撃や情報漏えいなどのセキュリティインシデントに対応する組織またはチームです。FIRSTは、CSIRT間の情報共有、インシデント対応の協力、セキュリティ標準の整備などを行っています。

FIRSTはEPSSのほか、脆弱性の技術的な深刻度を評価するCVSSも管理しています。

MITREやCNAとの関係

脆弱性管理におけるCNAやMITRE、FIRSTの関係性は以下の表のとおりです。

名称 主な役割
CNA 担当範囲の脆弱性へCVE IDを割り当て、CVE Recordを公開する
MITRE CVE Programの事務局やインフラ運営、上位CNAなどを担当する
FIRST CVSSやEPSSなど、公開された脆弱性を評価・活用するための仕組みを管理する

CNAは、FIRSTが管理するCVSSを使用して脆弱性を評価し、その値をCVE Recordに含めることができます。EPSSは、公開されたCVEやCVSSなどの情報を入力データとして利用します。

EPSSスコアとパーセンタイル

EPSSでは、各CVEについて主に次の2つの値が公開されます。

項目 内容
epss 今後30日以内に悪用活動が観測される予測確率
percentile そのCVE以下のEPSSスコアを持つCVEの割合

EPSSスコア

EPSSスコアは絶対的な予測確率です。

  • 0.01:1%
  • 0.10:10%
  • 0.50:50%

ただし、脆弱性が悪用される事象自体の発生率は低いため、大半のCVEのEPSSスコアは0に近い値になります。このため、数値が小さく見えても、ほかのCVEと比べると相対的に高い場合があります。

パーセンタイル

パーセンタイルは、すべてのCVEの中での相対的な順位を表します。

例えば、percentileが0.95であれば、そのCVEのEPSSスコアは全CVEの上位約5%に位置します。

EPSSスコアは悪用される確率、パーセンタイルはほかのCVEと比較した順位です。対応対象を一定数に絞りたい場合は、両方を確認すると判断しやすくなります。

EPSSの確認方法

EPSSのスコアは、API、日次CSV、GitHubの履歴データから確認できます。いずれも登録不要で無料です。

APIで特定のCVEを確認する

特定のCVEについて現在のスコアを確認する場合は、FIRSTのEPSS APIを使用します。

APIのエンドポイント、パラメータ、レスポンス形式は、FIRST.Org REST API「GET /epss」で公開されています。

https://api.first.org/data/v1/epss?cve=CVE-2021-44228

主な取得結果は次のとおりです。

{
  "cve": "CVE-2021-44228",
  "epss": "0.999990000",
  "percentile": "1.000000000",
  "date": "YYYY-MM-DD"
}

値は日々変化するため、上記は形式を示す例です。

複数のCVEを一度に確認する場合は、カンマで区切ります。

https://api.first.org/data/v1/epss?cve=CVE-2021-44228,CVE-2023-44487

過去の日付を指定する場合はdateを付けます。

https://api.first.org/data/v1/epss?cve=CVE-2021-44228&date=2025-01-01

直近30日間の推移はscope=time-seriesで取得できます。

https://api.first.org/data/v1/epss?cve=CVE-2021-44228&scope=time-series

EPSS APIで使用できる主なパラメータは次のとおりです。

パラメータ 内容
cve CVE IDで検索する。複数指定はカンマで区切る
date YYYY-MM-DD形式で過去の日付を指定する
days EPSSデータベースにスコアが追加されてからの日数で絞り込む
epss-gt 指定した値以上のEPSSスコアに絞り込む
epss-lt 指定した値以下のEPSSスコアに絞り込む
percentile-gt 指定した値以上のパーセンタイルに絞り込む
percentile-lt 指定した値以下のパーセンタイルに絞り込む
q CVE IDを部分一致で検索する
scope=time-series 直近30日間のスコアとパーセンタイルを取得する

例えば、EPSSスコアが0.5以上、またはパーセンタイルが0.9以上のCVEは次のように取得できます。

https://api.first.org/data/v1/epss?epss-gt=0.5
https://api.first.org/data/v1/epss?percentile-gt=0.9

APIは、特定のCVEまたは少数のCVEを検索する用途に向いています。全CVEを一件ずつAPIで取得する用途は推奨されていません。

FIRST API全体には、EPSS以外にも次の公開メソッドがあります。

メソッド 取得できる情報
/teams FIRSTに登録されたCSIRTの名称、国、連絡先、担当範囲など
/news FIRSTのニュース、記事、プレスリリース
/channels ニュースの分類、URL、RSSフィード
/countries 国名、国コード、地域
/epss CVEごとのEPSSスコア、パーセンタイル、過去のスコア

/teams、/news、/channels、/countriesはFIRSTの組織・広報情報を取得するためのAPIです。脆弱性のEPSSを取得する場合は/epssを使用します。

日次CSVを取得する

すべてのCVEについて最新スコアをまとめて取得する場合は、日次CSVを使用します。

日次CSVのURL、収録項目、利用方法は、FIRST「Get the Data」の「Daily CSV」で公開されています。

https://epss.empiricalsecurity.com/epss_scores-current.csv.gz

CSVには次の3項目が含まれます。

  • cve:CVE ID
  • epss:EPSSスコア
  • percentile:パーセンタイル

スキャナーの結果と一括照合する場合や、データベースへ取り込む場合は、APIより日次CSVの方が適しています。

GitHubで過去のスコアを確認する

過去のスコアは、Empirical Securityの公式GitHubリポジトリに日付ごとの圧縮CSVとして保存されています。

ファイルの配置は次の形式です。

/{年}/epss_scores-YYYY-MM-DD.csv.gz

例えば、2023年3月7日のスコアは次の場所にあります。

/2023/epss_scores-2023-03-07.csv.gz

EPSSスコアの算出方法

2026年6月15日に運用が開始されたEPSS v5では、XGBoostで実装された勾配ブースティング決定木が使用されています(FIRST「How EPSS Works」、2026年8月29日確認)。

脆弱性ごとに、以下の情報から約2,850の入力特徴量を作成します。モデルは、これらの入力特徴量と、学習時の正解ラベルである「観測された悪用活動」との関係を学習します。

約2,850の入力特徴量は、4種類に大別されます。

特徴量

Exploitコードや攻撃ツール

  • 公開されたExploitコードやPoC
  • MetasploitなどのExploit Frameworkへの収録状況
  • Nucleiテンプレートなど攻撃や検査に使用できるツールへの組み込み
  • GitHub上のExploitコードに対する利用や注目の状況

単にPoCが存在するかだけでなく、どこで公開され、実際に使用しやすい形になっているかなども特徴として扱われます。

セキュリティ分野での言及

セキュリティ関連サイトなどで、どの脆弱性が、いつ、どの程度取り上げられているかを使用します。最近になって言及が増えた脆弱性は、攻撃者から注目されている可能性があります。

脆弱性の特徴

  • CVSSのAttack Vector、Attack Complexity、Privileges Requiredなどの各指標
  • 機密性、完全性、可用性への影響
  • 脆弱性の説明文から抽出した特徴
  • ベンダーや製品の情報

EPSSはCVSSの合計スコアをそのまま使用するのではなく、CVSSを構成する個別の指標を特徴量として利用します。

CVEの経過時間と参照情報

CVEが公開されてからの経過時間や、そのCVEに関連付けられた参照情報の量も使用します。古い脆弱性であっても、攻撃ツールへの組み込みや情報の蓄積によって悪用される可能性があります。

学習時の正解ラベル

観測された悪用活動

「観測された悪用活動」は、約2,850の入力特徴量には含まれません。モデルを学習する際に、各CVEについて「その日に悪用が観測されたか」を示す正解ラベルとして、次のような情報が利用されます。

  • エンドポイントで検出されたマルウェア
  • ハニーポットで観測された攻撃
  • IDS・IPSで検出された悪用の試行
  • 脅威インテリジェンスや悪用済み脆弱性のカタログ

ここで扱われるのは、必ずしも侵害に成功した攻撃だけではありません。IPSで遮断された通信やハニーポットへの攻撃など、攻撃者がその脆弱性を狙った活動も学習上の証拠になります。

また、直近の悪用活動が日々のEPSSスコア算出に直接入力されるわけではありません。悪用活動の観測データはモデルの学習に使用され、日々のスコアは、その時点で得られる上記4種類の入力特徴量から算出されます。

モデルの学習方法

EPSSでは、ある日その時点で分かっていた脆弱性情報と、その後に観測された悪用活動を対応付けて学習します。

将来判明する情報が過去の学習データに混入しないよう、各日付の時点で実際に利用できた情報だけを記録するPoint-in-Time方式が使われています。

現行モデルの説明では、通常12か月分の履歴から、約1億2,000万行、約2,850列の学習データを構成しています。各行は「あるCVEのある1日」を表し、その日に悪用が観測されたかどうかが学習用のラベルになります。

ただし、エンドポイント製品、ハニーポット、IDS・IPSなどの観測手段で攻撃が検出されなかったからといって、その脆弱性が実際に悪用されなかったとは限りません。観測できなかった攻撃が含まれている可能性があるためです。

そこでEPSS v5では、悪用が観測されたデータを「Positive(悪用あり)」、悪用が観測されなかったデータを「Unlabeled(悪用の有無は不明)」として扱うPositive-Unlabeled Learning(PU Learning)が使用されています。「悪用が観測されなかったデータ」をすべて「悪用なし」と決めつけず、実際には悪用されていたものが混在する可能性を考慮して学習します(FIRST「How EPSS Works」、2026年8月29日確認)。

計算モデルの公開内容

EPSSでは、次のような情報が公開されています。

  • 使用するデータの種類
  • 特徴量の分類
  • 使用する機械学習アルゴリズム
  • 学習と評価の方法
  • モデルの性能や制約
  • 各CVEについて算出されたスコア

一方、次のものは完全には公開されていません。

  • 学習済みモデルそのもの
  • すべての学習データ
  • データ提供元から受け取った非公開の観測情報
  • 本番環境で同じスコアを生成するための完全なコード

そのため、仕組みや評価方法を確認することはできますが、第三者が同じ入力から公式スコアを完全に再現できる状態ではありません。

過去のEPSSモデル

これまでの計算モデルはFIRSTのResearchページに論文や講演資料がまとめられています。

バージョン 使用開始 主な計算手法・変更 説明資料
v1 2021年4月14日 Elastic Netで正則化したロジスティック回帰。16特徴量を使い、公開後12か月以内の悪用を予測 Exploit Prediction Scoring System(2021)
v2 2022年2月4日 XGBoostへ変更し、特徴量を1,164へ拡張。予測対象を今後30日間へ変更 Enhancing Vulnerability Prioritization: Data-Driven Exploit Predictions with Community-Driven Insights(2023)の「Evolution of EPSS」
v3 2023年3月7日 XGBoostを継続し、特徴量を1,477へ拡張。データ源やパラメータ調整も強化 Enhancing Vulnerability Prioritization: Data-Driven Exploit Predictions with Community-Driven Insights(2023)
v4 2025年3月17日 モデルとデータを更新 FIRSTの講演資料など。専用の査読論文はResearchページに掲載されていない
v5 2026年6月15日 XGBoost、Positive-Unlabeled Learning、約2,850特徴量を使用 FIRSTの現行How EPSS Works。専用の査読論文はResearchページに掲載されていない

v4とv5については、現時点でそれぞれに対応する専用の査読論文はFIRSTのResearchページに掲載されていません。v4は講演、v5はFIRSTの現行ドキュメントや講演などで説明されています。

GitHub上のスコアの期間は次のように分かれます。

バージョン GitHub上のスコア期間
v1 2021年4月14日~2022年2月3日
v2 2022年2月4日~2023年3月6日
v3 2023年3月7日~2025年3月16日
v4 2025年3月17日~2026年6月14日
v5 2026年6月15日~現在

v2以降のCSVには、先頭のコメント行にモデルのバージョンと公開日が記録されています。

CVE・CVSS・KEVとの違い

CVE、CVSS、KEV、EPSSは、それぞれ異なる情報を表します。

情報 判断できること
CVE どの脆弱性について話しているか
CVSS 脆弱性の技術的な深刻度
KEV 実際の攻撃で悪用されたことが確認されているか
EPSS 今後30日以内に悪用される可能性

CVSSが高くてもEPSSが低い場合や、CVSSがそれほど高くなくてもEPSSが高い場合があります。技術的に深刻な脆弱性と、攻撃者が実際に狙う可能性が高い脆弱性は、同じとは限らないためです。

KEVは確認された過去の悪用実績、EPSSは将来30日間の予測を表します。KEVに登録されている脆弱性のEPSSが低くても矛盾とは限りません。ただし、最近の悪用が確認されている場合は、その事実を優先して対応を判断する必要があります。

脆弱性管理での使い方

FIRST「Using EPSS」では、EPSSだけで対応を決めるのではなく、対象製品が自分の環境に存在するか、攻撃者が到達できるか、悪用された場合の影響、CISA KEVなどの確認済み悪用情報と組み合わせる方法が説明されています。このガイダンスを踏まえると、脆弱性管理では、例えば次のような流れでEPSSを利用できます。

  1. 脆弱性スキャナーで検出されたCVEを確認する
  2. KEV Catalogに登録されているか確認する
  3. EPSSスコアとパーセンタイルを確認する
  4. CVSSやベンダーのアドバイザリで影響を確認する
  5. 自分の環境で使用しているか、外部から到達可能か、修正版があるかを確認する
  6. これらの情報を組み合わせて対応順序を決める

例えば、同じCVSSスコアを持つ脆弱性が多数ある場合、KEVへの登録やEPSSの高さを使って、先に調査・対応する対象を絞り込めます。EPSSと環境固有の情報を組み合わせる際の考え方は、FIRST「Using EPSS」の「Combining EPSS with other signals」で説明されています。

ただし、EPSSとCVSSを単純に掛け算して独自のリスクスコアにする方法は推奨されていません。EPSSは確率ですが、CVSSは同じ性質の確率ではないため、掛け合わせた値に明確な統計的意味がないからです。この誤用は、FIRST「Using EPSS」の「Common misuses, misapplications, and misunderstandings」で「Score Laundering」として説明されています。

EPSSを使う際の注意点

低いEPSSは安全を意味しない

EPSSは予測であり、将来を確実に言い当てるものではありません。低いスコアでも悪用されることがあり、高いスコアでも必ず悪用されるわけではありません。FIRST「Using EPSS」でも、低い確率を安全という意味で扱わないよう説明されています。

個別環境の影響は判断しない

EPSSは、自分の環境に対象製品が存在するか、脆弱な機能を使用しているか、インターネットから到達可能かを認識していません。

スコアが高くても自分の環境に存在しない脆弱性は対応対象ではありません。反対に、EPSSが低くても、重要なシステムで外部公開されている場合は優先して確認する必要があります。環境に合わせてPresence(存在)、Reachability(到達可能性)、Consequence(影響)を確認する考え方は、FIRST「Using EPSS」の「Localizing the score」で説明されています。

攻撃情報を即時通知する仕組みではない

EPSSは攻撃をリアルタイムで通知するフィードではありません。日々のスコア変化は、Exploitコードの公開、攻撃ツールへの収録、セキュリティ分野での言及など、新しい入力情報を反映したものです。

実際の悪用が確認されたという情報がある場合は、EPSSの更新を待たず、その事実を優先して判断します。直近の悪用情報は日々のスコアへ直接入力されないことと、確認済みの悪用情報を優先する考え方は、FIRST「Using EPSS」で説明されています。

モデル更新をまたぐ比較に注意する

モデルのバージョンが変わると、同じCVEでもスコアが大きく変化することがあります。長期間の推移を分析する場合は、モデル切り替え日を確認する必要があります。モデルの切り替えによってスコアが変化する点は、FIRST「Get the Data」の「Historical data」で注意事項として説明されています。

まとめ

EPSSは、公開されたCVEについて、今後30日以内に悪用活動が観測される確率を予測する仕組みです。

  • FIRSTのEPSS SIGが維持している
  • 各CVEへ0から1の確率とパーセンタイルを付与する
  • API、日次CSV、GitHubから無料で取得できる
  • 現行モデルはXGBoostを使用し、多数の脆弱性情報や攻撃観測データから学習する
  • 計算方法の概要は公開されているが、公式スコアを完全に再現するためのモデルやデータは公開されていない
  • 過去のスコアはGitHubに保存されている
  • CVSS、KEV、自分の環境の情報と組み合わせて使用する

CVEが脆弱性の識別子、CVSSが技術的な深刻度、KEVが確認済みの悪用実績を示すのに対し、EPSSは近い将来の悪用可能性を示します。

EPSSだけで対応要否を決めるのではなく、多数の脆弱性から先に確認すべきものを絞り込むための情報として利用するのが適切です。

参考資料

以下の情報は2026年8月29日に確認しました。


KestreLynxは、稼働中のDocker・KubernetesコンテナのイメージをTrivyで定期的にスキャンし、前回からの変化と、深刻度・CISA KEV・EPSSに基づく優先度をSlackやWebhookへ通知するOSSです。Docker・Compose向けの修正計画と修正PR(実験的)で、更新候補の比較からGitHubへのPR作成まで修正を支援します(既定で無効)。マージ・再ビルド・デプロイは利用者が行います。

KestreLynxについて · GitHubでソースコードを見る