
CVSS、EPSS、およびCISAのKnown Exploited Vulnerabilitiesを用いて脆弱性パッチ適用を効率化します。リアルタイムの脅威情報に基づいて行動の優先順位を付け、競争上の優位性を獲得し、最新トレンドについて情報を得ることができます。
CVE Prioritizer は、CVSS、EPSS、 CISA の 既知の悪用脆弱性、および VulnCheck のコミュニティリソース( NVD++、 KEV)を組み合わせることで、脆弱性のパッチ適用の優先順位付けを支援する強力なツールです。 悪用される可能性や脆弱性が情報システムに与える潜在的な影響について、貴重な洞察を提供します。

CVE_Prioritizer は、CVSS と EPSS スコアの相関関係を活用して、脆弱性の修復作業を強化します。 CVSS が脆弱性の基本的な特性を捉えるのに対し、EPSS はデータに基づいた脅威情報を提供し、 パッチ適用の優先順位付けをより適切に行えるようにします。
FIRST のチームは、CVSS と EPSS を組み合わせたい理由について、EPSS ユーザーガイドで素晴らしい説明を行っています。以下の資料はその文書から抜粋したものです。
下図は、2021年5月16日のデータに基づく EPSS と CVSS スコアの相関を示しています。EPSS は 0 から 1(0%から100%)の予測スコアを生成し、スコアが高いほど悪用の可能性が高いことを示します。各ドットは 1 つ以上の脆弱性(CVE)を表しています。一部の脆弱性には説明のためにラベルが付けられています。

まず、ほとんどの脆弱性がプロットの下部に集中しており、EPSS スコアが 50%(0.5)を超える脆弱性はごく一部であることに注目してください。EPSS と CVSS スコアの間にはある程度の相関がありますが、全体として、このプロットは攻撃者が最大の影響を及ぼす脆弱性や、必ずしも悪用が容易な脆弱性(例えば、認証されていないリモートコード実行など)だけを標的にしているわけではないことを示唆する証拠を提供しています。
これは重要な発見です。なぜなら、攻撃者は最も深刻な脆弱性だけを探して利用しているという一般的な前提に反するからです。では、ネットワーク防御者はどのようにして、何を最初にパッチ適用するかを決める際に、これらの脆弱性の中から選択できるのでしょうか?
CVSS は脆弱性の基本的な特性を捉えるための有用なツールですが、脆弱性の修復作業の優先順位をより適切に付けるためには、EPSS のようなデータに基づいた脅威情報と組み合わせて使用する必要があります。
議論のために、以下の図を考えてみましょう。この図には、脆弱性の優先順位付けを一般的に示すための注釈が付けられています。

上記の意思決定戦略は、EPSS の驚くべき能力を強調しています。通常、数千から数万もの露出した脆弱性に対処しなければならなかったネットワーク防御者は、より少ないリソースで、悪用される可能性がはるかに高い脆弱性に対してより多くのパッチを適用できるようになりました。脆弱性を区別するこの能力は、これまで不可能でした。
私たちは、FIRST の推奨事項と自身の経験に基づいて、優先順位の閾値を改良しました。概要は以下のとおりです。
このアプローチにより、脆弱性は 5 つの優先度レベルに分類され、リソースをより効果的に割り当てることができます。
| 優先度 | 説明 |
|---|---|
| Priority 1+ | CISA の KEV にある CVE |
以下は、私たちのアプローチを適用した後の FIRST の推奨事項の修正版です。

注意: ツールを実行する際に独自の閾値を定義して、結果を組織のリスク選好に合わせることができます。
git clone https://github.com/TURROKS/CVE_Prioritizer.git
cd CVE_Prioritizer
pip install -r requirements.txt
pip install --user cve_prioritizer
CVE_Prioritizer を効果的に使用するには、以下の手順に従ってください。
-vc または --vulncheck を使用。-vck または vulnchek_kev を使用 (NVD++ でのみ動作)。-c の後に CVE ID を指定します。-l の後にカンマ区切りの CVE リストを指定します。-f を使用して、CVE ID を含むファイル(1行に1つ)をインポートします。
python3 cve_prioritizer.py -c CVE-2020-29127

python3 cve_prioritizer.py -l CVE-2020-29127,CVE-2017-16885

CVE のリストを含むテキストファイル(1行に1つ)を指定することもできます。
python3 cve_prioritizer.py -f ~\Desktop\CheckTheseCVEs.txt

CVE_Prioritizer は、好みに合わせた柔軟な出力オプションを提供します。デフォルトでは、CVE-ID とその優先度を含む結果の概要が表示されます。ただし、詳細モードを有効にして追加情報を取得することもできます。
利用可能な出力オプションは以下のとおりです。
要約結果(デフォルト): CVE-ID とその優先度を含む簡潔な概要を提供します。

詳細モード: 各 CVE について以下の情報を含む詳細な出力を有効にします。

CSV ファイル
-o または --output フラグを使用して、結果を CSV ファイルに保存できます。
python3 cve_prioritizer.py -f cve_list.txt -o ~/Desktop/prioritized.csv

これにより、使用しているターミナル出力とは独立して詳細な結果が出力されます。
ガイドラインについては CONTRIBUTING.md を参照してください。
このプロジェクトは BSD 3-Clause ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。
質問や問題があれば、[email protected] までご連絡ください。
Happy Patching!
このツールは NVD API を使用していますが、NVD による推奨や認定を受けたものではないことに注意してください。
| Priority 1 | 右上の象限にある CVE |
| Priority 2 | 右下の象限にある CVE |
| Priority 3 | 左上の象限にある CVE |
| Priority 4 | 左下の象限にある CVE |
-f フラグと --nessus または --openvas を併用して、Nessus または OpenVAS スキャンレポートから CVE を自動的に取り込みます。-v または --verbose を使用して詳細情報を表示します。--cvss や --epss でカスタム閾値を定義し、組織のリスク選好に合わせた結果を得ます。-t または --threads で同時スレッド数を定義します(デフォルト: 100)。