はじめに
npm
でパッケージをインストールしようとしたら脆弱性を指摘されたので、解決策をまとめます。
問題
jestのtesting-libraryをインストールしようとすると、下記のエラーが出る。
1 high severity vulnerability To address all issues, run: npm audit fix Run `npm audit` for details.
どうやらこれは、脆弱性が疑われるライブラリのバージョンを使用していると警告が出るようです。
解決方法
npm audit fix
を使用します。
npm audit fix
npm audit fix
は、Node.js プロジェクトで利用されるパッケージ管理ツールである npm のコマンドの一つで、プロジェクトの依存関係における既知のセキュリティ脆弱性を自動的に修正しようとするものです。
このコマンドを叩くと、内部的にどのような処理が行われるかというと
npm audit fixの処理内容
まず npm audit コマンドが内部的に実行されます。これは、プロジェクトの package.json および package-lock.json に記述されているすべての依存関係をスキャンし、それらが既知の脆弱性データベース(npm のレジストリが管理)と照合されます。脆弱性の特定: スキャン結果として、発見された脆弱性とその深刻度(低、中、高、クリティカルなど)、そして影響を受けるパッケージのパスがレポートされます。
自動的な修正試行: $npm audit fix は、この監査結果に基づいて、脆弱性を修正するための最も簡単な方法を探します。これは通常、脆弱性を持つパッケージを、脆弱性が修正された新しいバージョンにアップグレードすることで行われます。
パッチバージョンアップグレード: ほとんどの場合、後方互換性を壊さないマイナーなパッチバージョン(例: 1.0.0 から 1.0.1)へのアップグレードを試みます。
メジャーバージョンアップグレード: 重大な脆弱性の場合、メジャーバージョン(例: 1.0.0 から 2.0.0)へのアップグレードが必要になることがありますが、これは後方互換性の問題を引き起こす可能性があるため、npm audit fix はデフォルトではこれを自動で行いません。このような場合は、手動での介入が必要になります。
package-lock.json の更新: 修正が適用されると、package-lock.json ファイルが更新され、新しい依存関係のバージョンが反映されます。
おわりに
脆弱性をこんな簡単に解決できるコマンドは便利ですね!
参考