Cisco Advent Calendar 2024年版: : https://qiita.com/advent-calendar/2024/cisco
はじめに
シスコの同志による今年の Advent Calendar "Cisco Systems Japan Advent Calendar 2024" の 14 日目として投稿しました。このエントリで取り上げるテーマは、
「EPSS (Exploit Prediction Scoring System) を整理する」
です。
近年爆発的、加速的に増加する、脆弱性管理に対してどう効率よく対応できるのか、その可能性を考察すべく、脆弱性利用可能性という視点に注目する EPSS (Exploit Prediction Scoring System) の詳細に触れ、紐解いていこうと思います。
脆弱性管理のトレンド
組織内におけるIT資産の脆弱性管理という点に目を向けてみます。組織の中に存在するサーバ、端末、IoT機器のようなIT資産上のソフトウェアにおいて、その日その日の脆弱性管理と管理をするための監視という視点がどのような状況なのか?または、一般的な運用として、企業のIT部門、セキュリティ担当者は、どうそれを修正していくか、という視点です。
完結な言葉で説明するならば、現状〜未来にかけて悪化の一途を辿っている、また時間が進めば進むほど、この悪化の速度が早く、規模が大きくなっていく、という現状だといえます。
CVE と脆弱性発見・登録の加速度的増加
CVE (Common Vulnerabilities and Exposures) は 米国政府の支援を受けた非営利団体である Mitre Corporation (マイターコーポレーション) が中心に 1999 年に脆弱性を一意に特定できるよう、提案・実装し、CVE によってベンダーをまたいだ脆弱性情報の比較が行えるようになりました。
CVE の登場前は、各製品ベンダーやセキュリティベンダーが発見した脆弱性に対して独自に名前や識別子を付与することにより、各ベンダーで公表される脆弱性情報はばらばらに管理がされ、とある脆弱性が同じ問題に関するものかどうか、はっきりすることが困難でした。CVE によりこのような問題を一意な脆弱性として理解することが可能になります。
このグラフは、CVE 運用開始後の 1 年毎の CVE 登録・公開数の推移であり、CVE の成長と拡大を示すものです。NDB (National Vulnerability Database) として 2000年から始まり、脆弱性の公開は年々多くなってきていることが分かります。最初の数のスパイクは 2005 年です。これまでの運用は Mitre Corporation のみで登録が行われていましたが、アメリカのテクノロジーベンダーである Apple, Microsoft など 7つのベンダーが Cisco Number Authority (CNA) として認定され、CVE を Publish できるようになり登録数が増加しました。Cisco もCNAとしてこの初期のメンバーとして認定されています。2017年にも CNA が大きく増え、その後指数関数的な増加を辿っています。
- 2000 年以前〜 2004 年:1300件/年
- 2005 年〜 2016 年:6000件/年
- 2022 年〜 2024 年:28000件/年
これは、最新の過去 3年だけの合計で 86000件の脆弱性登録を超え、これは 2022年、2023年、2024年の最新のたった3年のみで全登録脆弱性の 1/3 に達する脆弱性登録数の拡大となります。
- 2021 年に公開された新しいソフトウェア脆弱性:平均 55 件 / 日(年間で合計 20,000 件)
- 2022 年に公開された新しいソフトウェア脆弱性:平均 73 件 / 日(年間で合計 26,448 件)
- NVD に現在登録されている全脆弱性の 3 分の 1 は、2022 年以降に登録されたもの
組織における脆弱性修正の実態
実際の組織における脆弱性修正の実態は、
- 組織が毎月修復している脆弱性はおよそ 10 件中の 1 件にすぎない
ということが The Cyentia Institute https://library.cyentia.com/report/report_008756.html により報告されています。
ということは、このような状況で組織の資産の数に発見した脆弱性を積算した場合、例えば、合計で何百万件もの脆弱性が存在すると判別したとしても、そのすべてを修復することは 100% 不可能であり、リスクを軽減する管理の状況について組織に報告することもできません。サイバー保険の費用を増やして補償をより手厚くしたうえで、これまで通りの脆弱性管理を続けるか、人員とキャパシティを増やし新しいインフラストラクチャ(改善された SOC など)に対して投資するか、それでも非効率的な判断をしていくことになるかもしれません。
脆弱性の評価システム CVSS
発見された脆弱性の影響度を含む標準的な評価として採用され、参照されるのが、Common Vulnerability Scoring System (CVSS) です。評価システムの管理母体は first.org https://first.org/ であり、IT資産、情報システムの構成要素に関する脆弱性に対して、汎用的な評価運用方法を実現しています。2004年10月に原案が作成、2005年に version 1,その後 version 2, version3, 2024年に version 4 としてそのアップデートされてきました。
「Common Vulnerability Scoring System (CVSS) :脆弱性の主要な特徴をキャプチャする方法、その深刻度を反映した数値スコアを作成する方法を提供し、そのスコアをテキストで表現することができる。数値スコアは、定性的な表現 (low, medium, high, critical) で変換することができ、組織が脆弱性管理プロセスを適切に評価、対処優先順位付けをサポートできる」 - first.org
基本評価基準 (一般的な情報セキュリティの要素を構成する、C, I, A による脅威評価となる基本値), 現状評価基準 (Exploit コードの出現有無、対策脆弱性の利用可能性による基準), 環境評価基準 (攻撃二次被害、影響度、コンポーネントの適用等の状況基準) です。
CVSS の数値化における方程式は確立されており、スコアを構成する個々の構成基準の判定値を指定することで、最終的な脆弱性スコアが算出されます。一つの例として、どのくらいその脆弱性が存在している製品が世の中で利用されているか、その製品の利用形態による影響範囲の判定は、やはりそれを展開しているベンダーやソフトウェアのオーナーでしか知り得ない情報であり、その主観的判定により大きく全体的な評価の数値に影響すると予想されます。
異なる規模の2つの組織で検出された CVSS スコアの例です。
検出された資産上の脆弱性総数に対する、CVSSにて High としてスコアリングされた脆弱性総数との比較となります。この例では、規模や、資産状況の異なる2つの組織の例となりますが、いずれもCVSSで計算される High プライオリティとしてマークされた脆弱性は全体のおよそ60%を超えているという状況です。
EPSS (Exploit Prediction Scoring System)
EPSS first.org によって議論されており、それはソフトウェアの脆弱性が悪用される可能性(確率)を推定するためのデータ駆動型の取り組みです。他の標準は、脆弱性の生得的な特徴を捕捉し、重大性の尺度を提供するのに有用ですが、その脆弱性の脅威を正しく評価するには機能の限界があるといえます。EPSS により、CVE や実世界のエクスプロイトデータから得られる最新の脅威情報を使用し、そのギャップを埋めることができます
- EPSSモデルは、0~1(0~100%)の確率スコアを生成
- スコアが高いほど、脆弱性が悪用される確率は高くなる
first.org の目標と成果物
- 現在、すべてのCVEについてEPSSスコアを公表
- EPSS SIG (Special Intersting Group) 公表されているすべての脆弱性についてほぼリアルタイムの評価を提供するために、データ収集と分析の成熟度を向上させることに取り組んでいる
- EPSSでは、3rd Party のデータプロバイダーとのパートナーシップを構築し、スコアの一般公開インターフェースを提供できるインフラを確立しています
EPSS データモデル
- 現時点から30日後までに実攻撃手法 (Exploit) が活動観測される確率を毎日推定
- 利用可能なすべての情報を最大限に活用する
- (Step1) さまざまな情報から多くの脆弱性情報を収集
- (Step2) 日々の悪用活動の証拠を収集
- (Step3) モデルの Fine Tuning を継続する:脆弱性情報と悪用活動の関係を発見し学習
- (Step4) モデルのパフォーマンスを測定、ステップ3を繰り返してモデルを最適化
- (Step5) 毎日:脆弱性情報(ステップ1)を更新し、モデル(ステップ3)を使用して、公表されている各CVEについて、今後30日間に悪用される確率の推定値を毎日作成
EPSS が収集する脆弱性情報
- ベンダー (CPE, NVD経由)
- 脆弱性経過期間 (MITRE CVEリストでCVEが公開されてからの日数)
- 内容を定義するカテゴリカルなラベルを持つ参照 (MITRE CVEリスト, NVD)
- 脆弱性の説明から抽出した正規化複数単語表現 (MITRE CVEリスト)
- 脆弱性の弱点 (CWE, NVD経由)
- CVSSメトリクス (CVSS 3.xの基本ベクトル, NVD経由)
- CVEがリストやウェブサイトに掲載/議論されている (CISA KEV, Google Project Zero, Trend Micro Zero Day Initiative (ZDI), さらに追加中)
- 公開エクスプロイトコード(Exploit-DB、GitHub、MetaSploit)
- 攻撃的なセキュリティツールとスキャナー (Intrigue, sn1per, jaeles, nuclei)
EPSS Exploitation 活動
悪用活動利用に関するロジック
- 脆弱性の悪用が試みられたという証拠 (脆弱性のあるターゲットに対して成功したという証拠ではない)
- ハニーポット、IDS/IPSセンサー、ホストベースの検知方法からデータを収集
- Exploit 活動が一度開始されれば無期限に継続するような永続的な流れになるわけではない。Exploit は突発的、散発的、局地的、一時的に行われる可能性もある
- 脆弱性が「悪用された」という単純な報告だけでは、悪用活動がいつ、どれくらいの頻度で、どれくらいの頻度で発生したかを正確に理解する助けにはならない
- いつ発生したかを正確に知ることで、それが特定の事象の前なのか後なのかを測定
- 今後も悪用される可能性があるかどうかを予測
- 具体的なタイミング情報なしに、各脆弱性について収集しているさまざまなイベントの影響を正確に測定できない
EPSS Score File
EPSS のスコアファイルは、first.org より毎日アップデートされたファイルが公開され、入手が可能です。
任意で抽出された同じ脆弱性について、6ヶ月前のスコアと比較してみます。
- 左:2024/06/02 取得ファイル
- 右:2024/12/14 取得ファイル
個別に CVE として登録されたそれぞれの脆弱性について、EPSSのスコアが上がっているものもあれば、下がっているものもあることが分かります。
EPSS 特徴まとめ
再度脆弱性をどう評価していくか、どう点数付けしていくかの視点に立ち戻り、EPSSの特徴をまとめます。
- EPSSは、攻撃者がそのような動きをする前に、その確率を予測し、攻撃者に対して先手を打つことができるような情報を、実務者に提供しようするもの
- 影響度ではなく、その日以降30日以内にExploitが出現する可能性
- 常にチューニングされている、データモデルをベースに、データドリブンでスコアが毎日計算される
- データモデルは非公開
- 外部の専門的な脆弱性DB、ExploitDBを積極的に利用する(これも含めてデータモデルを構築)
- Exploitコードが出た後は、EPSSを利用した評価数値の価値・影響度は少ない
ソフトウェア、ITシステム構成コンポーネントの脆弱性優先度としての評価付を行うメソッドとして、EPSSの採用が進んでいます。EPSSをだけで完結するものではなく、EPSSを含めた多角的な評価要素機能を利用・拡張し、今後どのようなスピードで インターネット上に拡散していく Exploit が広がるかをベースに優先付けを行う形が今後、脆弱性評価の主流になると予想されます。
cvemap
Mac に Projectdiscovery.io の cvemap をインストールし、CVE を検索してみます。cvemap はコマンドラインで利用でき、リモートからAPIキーで認証し、Projectdiscovery.io のクラウドで管理される、脆弱性情報を取得するアプリケーションです。
- projectdiscovery.io サインナップ
- API キー生成
- API 認証
% cvemap -auth
実行例
% cvemap -h1
% cvemap -product confluence -l 5
% cvemap -silent -cs '> 7' -es '> 0.00053' -l 5
projectdiscovery.io
[INF] Current cvemap version v0.0.6 (outdated)
╭───────────────┬──────┬──────────┬─────────┬────────────┬──────┬──────────╮
│ ID │ CVSS │ SEVERITY │ EPSS │ PRODUCT │ AGE │ TEMPLATE │
├───────────────┼──────┼──────────┼─────────┼────────────┼──────┼──────────┤
│ CVE-2020-4027 │ 4.7 │ MEDIUM │ 0.00105 │ confluence │ 1626 │ ❌ │
│ CVE-2019-3398 │ 8.8 │ HIGH │ 0.97061 │ confluence │ 2066 │ ✅ │
│ CVE-2019-3396 │ 9.8 │ CRITICAL │ 0.9743 │ confluence │ 2090 │ ✅ │
│ CVE-2019-3395 │ 9.8 │ CRITICAL │ 0.07038 │ confluence │ 2090 │ ❌ │
│ CVE-2019-3394 │ 8.8 │ HIGH │ 0.14242 │ confluence │ 1933 │ ❌ │
╰───────────────┴──────┴──────────┴─────────┴────────────┴──────┴──────────╯
参考
[1] CVE : https://www.nic.ad.jp/ja/basics/terms/cve.html
[2] CVE : https://cve.mitre.org/cve/
[3] Prioritization to Prediction Volume 8: Measuring and Minimizing Exploitability https://library.cyentia.com/report/report_008756.html
[4] 共通脆弱性評価システム CVSS : https://www.ipa.go.jp/security/vuln/CVSS.html
[5] CVSSv3 Calculator: https://www.first.org/cvss/calculator/3.0
[6] EPSS : https://www.first.org/epss/
[7] EPSS : https://arxiv.org/abs/1908.04856
[8] EPSS Score : https://www.first.org/epss/data_stats.html
[9] cvemap : https://docs.projectdiscovery.io/tools/cvemap/overview