JavaScript

npm install時にnpm auditのセキュリティ警告が出る場合の対処法

最近になって、npm install 時に以下の警告が出て WARN レベルの警告が発生するようになりました。

found 25 vulnerabilities (2 low, 2 moderate, 20 high, 1 critical)
run npm audit fix to fix them, or npm audit for details

どうやら、脆弱性が疑われるライブラリバージョンを使っていると警告が出るようになったようです。

これは GHE(GitHub Enterprise)でも確認できていて、Node.js だけでなく他の言語(python, javaなど)でも同じでした。

今回はこの問題を解決していきたいと思います。

セキュリティ警告があるライブラリの確認

警告の通り、npm audit を実行することで大半のことは解決できるのですが、まずは該当のライブラリをチェックしてみましょう。

npm audit コマンドで詳細なレポートが確認できます。

不要な方は、いきなり npm audit fix で解決しちゃってください。

結果レポートの一部を抜粋します。lodash や marked が指摘されていますね。

これは newman をメインに使っているリポジトリですが、newman 自体もアップデートしていなかったのでちょうどいい機会です。

セキュリティ警告の対応

では、コマンドに頼って解決しましょう。

ライブラリの更新を行ってくれたようですが、1 個だけ解決できなかったライブラリがあるようです。

詳しく見てみましょう。

404 scanned packages と言われていて、package-lock.json を見てもバージョンは古いままになっています。

サイトにアクセスして 4.4.6 のバージョンパッケージを探してみます。警告内容と Google 翻訳の結果は以下の通り。

Versions of csv-parse prior to 4.4.6 are vulnerable to Regular Expression Denial of Service. The __isInt() function contains a malformed regular expression that processes large specially-crafted input very slowly, leading to a Denial of Service. This is triggered when using the cast option.

4.4.6より前のcsv-parseのバージョンは、正規表現のサービス拒否に対して脆弱です。 __isInt()関数には、特別に細工された大きな入力を非常にゆっくりと処理する不正な正規表現が含まれており、サービス拒否につながります。これは、キャストオプションを使用するとトリガーされます。

csv-parse(Regular Expression Denial of Service)

最新バージョンは 4.4.6 で用意されているようですね。

npm update や npm dedupe で依存関係の修復を期待したのですが、状況が変わらなかったので直接コマンドからアップデートしてみます。

package-lock.json にも反映されています。

これで newman 実行時の警告はなくなったので様子見してみます。