こんにちは。@Esperna です。
背景
npm auditしたときに
12 vulnerabilities (6 moderate, 4 high, 2 critical)
みたいな出力が出ます。上記の moderate,high,criticalの定義がものすごく気になってます。
About audit reportsを見ると
重要度 | 推奨される対応 |
---|---|
Critical | 直ちに対処してください |
High | できるだけ早急に対処してください |
Moderate | 時間が許す限り対処してください |
Low | お任せします、必要に応じて対処してください |
という記載があり、少なくともCriticalとHighは対処すべきとは思うのですが、
何を以て重要度を判断してるのかが分からず、それを分かってないことは危険ではないか。
例えばModerateの脆弱性が致命傷になることだってケースによってはあるはず。
あるいはそうならないケースもあるのではないかと思って、もう少し詳しく調べてみることにしました。
npm auditをよく見てみる
以下はとあるリポジトリでnpm auditを実行した時の結果の一部です。
% npm audit
# npm audit report
ajv <6.12.3
Severity: moderate
Prototype Pollution in Ajv - https://github.com/advisories/GHSA-v88g-cgmw-v5xw
fix available via `npm audit fix`
node_modules/table/node_modules/ajv
table 3.7.10 - 4.0.2
Depends on vulnerable versions of ajv
node_modules/table
Prototype Pollutionという単語が出ているので調べてみると、
2018年の記事ですがNode.jsにおけるプロトタイプ汚染攻撃とは何かが目につきました。
オブジェクトリテラルの__proto__が Object.prototype と同一であることを利用して、
他のオブジェクトのプロパティを書き換えてしまうことができると。
moderateになってますが、普通に恐ろしいなと思いました。
それはさておき、重要なのが以下のGitHubのリンクで、
https://github.com/advisories/GHSA-v88g-cgmw-v5xw
を見てみると、CVE-2020-15366というIDがあります
CVEはCommon Vulnerabilities and Exposuresの略で、IPAによると
個別製品中の脆弱性を対象として、米国政府の支援を受けた非営利団体のMITRE社が採番している識別子だそうで、脆弱性検査ツールや脆弱性対策情報提供サービスの多くがCVEを利用しているそうです(*1)。
また、上記リンク先には
CVSS base metrics
Attack vector Network
Attack complexity High
Privileges required None
User interactionNone
Scope Unchanged
Confidentiality Low
Integrity Low
Availability Low
という記述がありますが、こちらはBase metricsというものがあり、
- Au :攻撃前の認証要否 (Authentication):脆弱性を攻撃するために対象システムの認証が必要であるかどうか
- C :機密性への影響 (情報漏えいの可能性、 Confidentiality Impact ):脆弱性を攻撃された際に、対象システム内の機密情報が漏えいする可能性
- I :完全性への影響 (情報改ざんの可能性、 Integrity Impact ):脆弱性を攻撃された際に、対象システム内の情報が改ざんされる可能性
- A :可用性への影響 (業務停止の可能性、 Availability Impact )
などの観点があるようです。Base metricsの計算式は正直よく分かりませんでした。
所感
- 結局、npm auditのwarningの定義(というか計算式)はよく分からなかった
- moderate, high, criticalだけでなくCVEの内容まで見たほうが良さそう
- 下記はmoderateではなくhighではなかろうか
ajv <6.12.3
Severity: moderate
Prototype Pollution in Ajv - https://github.com/advisories/GHSA-v88g-cgmw-v5xw
参考