大規模なソフトウェア開発プロジェクトにおいて脆弱性を体系的に扱うには、それらの分類方法や、脆弱性データベースの存在を認識しておく必要があります。
セキュリティマネジメントには「既知」と「未知」のものがある
- 既知の脆弱性 (known vulnerabilities)
- 開発時、出荷時などにすでに発見されている脆弱性。管理は容易。
- 未知の脆弱性 (unknown vulnerabilities)
- 定期的なチェックの仕組み を導入して発見する必要がある。
脆弱性データベース
各種プログラミング言語用に配布されているライブラリで脆弱性が発見されると、下記のような脆弱性データベースに登録されて公開されます。
- NVD: National Vulnerability Database
- NIST(アメリカ国立標準技術研究所)が管理している脆弱性データベースです。
- GitHub Advisory Database
- GitHub が管理している脆弱性データベースです。いろいろなデータベースを横断的に検索できるので便利です(参考: GitHub Advisory Database について)。
- JVN: Japan Vulnerability Notes
脆弱性 ID と指標
CVE: 脆弱性の識別子
脆弱性の ID 体系としては、CVE-ID が有名です。
NVD で管理されている脆弱性には、一意の CVE: Common Vulnerabilities and Exposures(共通脆弱性識別子) という ID が割り当てられています(CVE-2022-0123
のような形式)。
これにより、脆弱性の報告、追跡、共有が簡単になります。
CWE: 脆弱性のカテゴリ
CWE: Common Weakness Enumeration(共通脆弱性タイプ一覧) という脆弱性カテゴリも定義されています。
CVSS: 脆弱性の深刻度
脆弱性の深刻度を評価するための、CVSS: Common Vulnerability Scoring System(共通脆弱性評価システム) という枠組みが定義されており、脆弱性の影響、機密性、可用性、完全性、およびその他の要因を評価して、それぞれの脆弱性に 0 ~ 10 の CVSS スコアが割り当てられています。 CVSS スコアにより、組織は脆弱性を優先順位付けして対処することができます。
- CVSS スコアの分類
- 9.0~10.0: 緊急
- 7.0~8.9: 重要
- 4.0~6.9: 警告
- 0.1~3.0: 注意
- 0: なし