GitHubの通知欄にめずらしく(本当に)通知が来ていた。
Potential security vulnerability found in the ssri dependency
実際の通知画面はこんな感じ
通知をクリックして詳細を見ると、「./package-lock.jsonで定義されている依存関係には既知のセキュリティ脆弱性があり、更新する必要があります。」とのことでした。
We found a potential security vulnerability in one of your dependencies. A dependency defined in ./package-lock.json has known security vulnerabilities and should be updated.
以前作ったAngular Tetrisの./package-lock.json
で定義された依存関係の中に、脆弱性のあるモジュールが含まれているようです。
「Review vulnerable dependency」ボタンを押すと、問題のあったモジュール名とバージョンも教えてくれます。
ssri
のバージョンを5.2.2
以上にすれば、脆弱性は解決するとのこと。
脆弱性のあるモジュールのバージョンを上げる
package.jsonの定義しているライブラリのバージョンを最新にしてくれるnpm-check-updates
を使います。
# インストール npm install -g npm-check-updates
npm-check-updates
をインストールした後、ncu
コマンドでバージョンのアップデートが可能なライブラリを調べることができます。
$ ncu /angular-tetris/package.json ⸨░░░░░░░░░░░░░░░░░░⸩ ⠦ : @angular/cli 1.7.3 → 1.7.4 karma-jasmine-html-reporter ^0.2.2 → ^1.0.0 ts-node ~5.0.1 → ~6.0.0 typescript ~2.7.2 → ~2.8.3 The following dependencies are satisfied by their declared version range, but the installed versions are behind. You can install the latest versions without modifying your package file by using npm update. If you want to update the dependencies in your package file anyway, run ncu -a. @angular/animations ^5.2.8 → ^5.2.10 @angular/common ^5.2.8 → ^5.2.10 @angular/compiler ^5.2.8 → ^5.2.10 @angular/core ^5.2.8 → ^5.2.10 @angular/forms ^5.2.8 → ^5.2.10 @angular/http ^5.2.8 → ^5.2.10 @angular/platform-browser ^5.2.8 → ^5.2.10 @angular/platform-browser-dynamic ^5.2.8 → ^5.2.10 @angular/router ^5.2.8 → ^5.2.10 core-js ^2.5.3 → ^2.5.5 rxjs ^5.5.6 → ^5.5.10 zone.js ^0.8.20 → ^0.8.26 @angular/compiler-cli ^5.2.8 → ^5.2.10 @angular/language-service ^5.2.8 → ^5.2.10 @types/jasminewd2 ~2.0.2 → ~2.0.3 @types/node ^9.4.7 → ^9.6.6 codelyzer ^4.2.1 → ^4.3.0 karma ~2.0.0 → ~2.0.2 karma-jasmine ~1.1.0 → ~1.1.1 protractor ~5.3.0 → ~5.3.1 Run ncu with -u to upgrade package.json
問題がなければ、ncu -u
コマンドでpackage.jsonの更新を行います
$ ncu -u /angular-tetris/package.json ⸨░░░░░░░░░░░░░░░░░░⸩ ⠇ : @angular/cli 1.7.3 → 1.7.4 karma-jasmine-html-reporter ^0.2.2 → ^1.0.0 ts-node ~5.0.1 → ~6.0.0 typescript ~2.7.2 → ~2.8.3 @angular/animations ^5.2.8 → ^5.2.10 @angular/common ^5.2.8 → ^5.2.10 @angular/compiler ^5.2.8 → ^5.2.10 @angular/core ^5.2.8 → ^5.2.10 @angular/forms ^5.2.8 → ^5.2.10 @angular/http ^5.2.8 → ^5.2.10 @angular/platform-browser ^5.2.8 → ^5.2.10 @angular/platform-browser-dynamic ^5.2.8 → ^5.2.10 @angular/router ^5.2.8 → ^5.2.10 core-js ^2.5.3 → ^2.5.5 rxjs ^5.5.6 → ^5.5.10 zone.js ^0.8.20 → ^0.8.26 @angular/compiler-cli ^5.2.8 → ^5.2.10 @angular/language-service ^5.2.8 → ^5.2.10 @types/jasminewd2 ~2.0.2 → ~2.0.3 @types/node ^9.4.7 → ^9.6.6 codelyzer ^4.2.1 → ^4.3.0 karma ~2.0.0 → ~2.0.2 karma-jasmine ~1.1.0 → ~1.1.1 protractor ~5.3.0 → ~5.3.1 Upgraded /angular-tetris/package.json
ここで念のため、packacge-lock.jsonを一度削除します。
削除した後、npm update
コマンドで更新したライブラリをインストールします(削除したpackage-lock.jsonもここで再作成されます)
$ npm update
package-lock.jsonの中身を確認すると、脆弱性のあったssri
のバージョンが上がっていることがわかります。
package-lock.json
:
"ssri": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", "dev": true, "requires": { "safe-buffer": "5.1.1" } },
変更をコミットしてプッシュすると、GitHub上の警告メッセージも無事消えます。