GitHubに置いているコード内で使用しているnpmパッケージの脆弱性が指摘されたので、解消してみます。
脆弱性の診断
脆弱性の詳細を確認します。
GitHubでは、ハイレベルの脆弱性のみが指摘されるようなのですが、auditではローレベルのものも確認できます。
$ npm audit
パッケージのアップデートがある場合
脆弱性が指摘されているパッケージにアップデートが無いか確認します。
$ npm outdated
アップデートが出ている場合はアップデートします。
$ npm update (package name)
脆弱性が解消されたか確認します。
$ npm audit
パッケージが使用しているパッケージに脆弱性がある場合
まず自動修正で直せるものを直します。
$ npm audit fix
自動修正できなかった、脆弱性がある「パッケージ名」と、「どのバージョンまで上げればいいか」を確認します。
$ npm audit
古いパッケージのバージョンナンバーを確認します。
$ npm ls (package name)
package-lock.jsonの修正
package-lock.json内の記述検索してバージョンを修正して、保存します。
パッケージ名前で検索すると、問題ないバージョンの箇所もヒットしてしまうので、古いバージョンナンバーで検索してパッケージ名を確認すると楽でした。
「^」「~」の意味
バージョンナンバーの頭についている「^」「~」は、許容するアップデートの指定です。
出典:https://docs.npmjs.com/misc/semver
^1.2.3 := >=1.2.3 <2.0.0
^0.2.3 := >=0.2.3 <0.3.0
^0.0.3 := >=0.0.3 <0.0.4~1.2.3 := >=1.2.3 <1.(2+1).0 := >=1.2.3 <1.3.0
~1.2 := >=1.2.0 <1.(2+1).0 := >=1.2.0 <1.3.0 (Same as 1.2.x)
~1 := >=1.0.0 <(1+1).0.0 := >=1.0.0 <2.0.0 (Same as 1.x)
~0.2.3 := >=0.2.3 <0.(2+1).0 := >=0.2.3 <0.3.0
~0.2 := >=0.2.0 <0.(2+1).0 := >=0.2.0 <0.3.0 (Same as 0.2.x)
~0 := >=0.0.0 <(0+1).0.0 := >=0.0.0 <1.0.0 (Same as 0.x)
~1.2.3-beta.2 := >=1.2.3-beta.2 <1.3.0 Note that prereleases in the 1.2.3
パッケージの再インストール
package-lock.jsonの記述は修正しましたが、実際には旧バージョンのパッケージがインストールされたままなので、一度node_modulesをフォルダごと消し、再インストールします。
$ npm ci
確認
脆弱性が検出されなくなったかの確認
$ npm audit
動作確認
パッケージのバージョンアップに伴うコードの変更点などは確認せずに修正しているので、不具合がでるようになった可能性があるので動作確認をします。
GitHubでの脆弱性の指摘が解消されるかの確認
最後に、GitHubにPushして脆弱性の指摘を解消される事を確認します。