masalibの日記

システム開発、運用と猫の写真ブログです

Node.jsの脆弱性チェックツールの「nsp」を試してみた

Node.jsのベストプラクティス
github.com

脆弱性のチェックをやった方がいいよと書いてあったのでやってみました
XMLを単純に出力しているプログラムなので、
問題ないのかなと軽い気持ちでやってみました

ちなみに今回作ったプログラムはIP制限をしているので
アタックをうける事はほぼないですが
本来は脆弱性チェックをしないです
練習も兼ねてやってみた

インストール

www.npmjs.com

npm install -g nsp nsp-reporter-checkstyle

チェック

チェックは簡単でプロジェクトのFolderに移動して実行するだけです

cd /var/node/xmlsampleapp
nsp check

チェック結果

(+) 3 vulnerabilities found
┌────────────┬────────────────────────────────────────────────────────────────────┐
│            │ Incorrect Handling of Non-Boolean Comparisons During Minification  │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Name       │ uglify-js                                                          │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ CVSS       │ 8.3 (High)                                                         │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Installed  │ 2.2.5                                                              │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Vulnerable │ <= 2.4.23                                                          │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Patched    │ >= 2.4.24                                                          │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Path       │ xmlsampleapp@1.0.0 > jade@1.11.0 > transformers@2.1.0 >            │
│            │ uglify-js@2.2.5                                                    │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ More Info  │ https://nodesecurity.io/advisories/39                              │
└────────────┴────────────────────────────────────────────────────────────────────┘

┌────────────┬────────────────────────────────────────────────────────────────────┐
│            │ Regular Expression Denial of Service                               │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Name       │ mime                                                               │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ CVSS       │ 7.5 (High)                                                         │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Installed  │ 1.3.4                                                              │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Vulnerable │ < 1.4.1 || > 2.0.0 < 2.0.3                                         │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Patched    │ >= 1.4.1 < 2.0.0 || >= 2.0.3                                       │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Path       │ xmlsampleapp@1.0.0 > express@4.15.5 > send@0.15.6 > mime@1.3.4     │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ More Info  │ https://nodesecurity.io/advisories/535                             │
└────────────┴────────────────────────────────────────────────────────────────────┘

┌────────────┬────────────────────────────────────────────────────────────────────┐
│            │ Regular Expression Denial of Service                               │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Name       │ uglify-js                                                          │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ CVSS       │ 5.3 (Medium)                                                       │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Installed  │ 2.2.5                                                              │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Vulnerable │ <2.6.0                                                             │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Patched    │ >=2.6.0                                                            │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ Path       │ xmlsampleapp@1.0.0 > jade@1.11.0 > transformers@2.1.0 >            │
│            │ uglify-js@2.2.5                                                    │
├────────────┼────────────────────────────────────────────────────────────────────┤
│ More Info  │ https://nodesecurity.io/advisories/48                              │
└────────────┴────────────────────────────────────────────────────────────────────┘

f:id:masalib:20180223204123p:plain
え・・・まじで・・・
脆弱性が見つかりました

npm install uglify-js mime

バージョンアップをしてみた

もう1度チェックをしてみたのですが脆弱性が消えていなかった
実際のモジュールをみるとバージョンアップされている
どこを更新すればいいのかわからず時間切れになった
しっかりとしてサービスを動かす前にこの問題を解決しないと!!