LoginSignup
6
4

More than 3 years have passed since last update.

npmパッケージに起因する脆弱性の指摘を雑に解消する

Last updated at Posted at 2019-07-18

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して脆弱性の指摘を解消される事を確認します。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4