npm audit
にはaudit-level
オプションがありますが、このオプションで渡せるSeverityとCVSSにはどのような関係があるのでしょうか。
この興味が湧いたのは、運用設計においてどの程度のCVSS値を持つ脆弱性から真剣に対応するかを定めようとしているからです。
npm audit
Webアプリケーションを運用するということは脆弱性との戦いの始まりでもあり、自分たちが使っているライブラリに脆弱性があるかどうかを監視し続けることになります。
npmにはnpm audit
というサブコマンドがあり、利用しているライブラリに内在する脆弱性をレポートし、場合によっては修正までしてくれます。
asks for a report of known vulnerabilities. If any vulnerabilities are found, then the impact and appropriate remediation will be calculated. If the fix argument is provided, then remediations will be applied to the package tree.
audit-level
ここで興味が湧いたのは、npm audit
コマンドの持つaudit-level
オプションです。このaudit-level
オプションには以下のSeverityを渡すことができます。npm audit
は、渡したSeverity以上の脆弱性を見つけた場合は、終了ステータス非0で終了します。
- null,
info
low
moderate
high
critical
none
これらはCVSSの定めるQualitative Severity Rating Scaleと似ているようですが、実際のところどうなのでしょうか。
npm auditの参照する脆弱性データベースはどこなのか
まず、npm audit
が参照している脆弱性データベースはどこなのでしょうか。答えはGitHub Advisory Database · GitHubでした。
npm audit
がGitHub Advisory Databaseと統合されたことは、以下のエントリに記述があります。
Today, we’re adding a proxy on top of the GitHub Advisory Database that speaks the npm audit protocol. This means that every version of the npm CLI that supports security audits is now talking directly to the GitHub Advisory Database.
GitHub Advisory Database now powers npm audit - The GitHub Blog
GitHub Advisory DatabaseのSeverityはどう定義されるのか
これはGitHub Advisory Database についてに解説があります。
重要度レベルは、"共通脆弱性評価システム (CVSS) セクション 5" で定義されている 4 つの可能なレベルのいずれかです。
- 低
- Medium/Moderate
- 高
- Critical
実際にCVSSで定義されているのは以下のようになっています。 これと上述のGitHubのドキュメントを対照すると、MediumとModerateは共にCVSS Score 4.0-6.9を指すようですね。
Rating | CVSS Score |
---|---|
None | 0.0 |
Low | 0.1 - 3.9 |
Medium | 4.0 - 6.9 |
High | 7.0 - 8.9 |
Critical | 9.0 - 10.0 |