npmのセキュリティーアップデートが必要な依存パッケージを更新する
Dependabotがセキュリティーアップデートを毎度促してくれるのですが、いまいち分からず放置していたんですが、根気よく調べていくと対応方法がわかったので残しておきます
npmパッケージを更新
まずはnpm update
でパッケージを更新。接頭辞に^
がついたものはメジャーバージョンは固定され、マイナーアップデートになります。
脆弱性のある依存パッケージを更新
npm updateした時に脆弱性のあるパッケージがあるのでnpm audit fix
してください的なメッセージが表示されるので言われた通りに実行。
でもそれだけでは大体終わりませんよね
以下の手順は、ずっとセキュリティーアラートが鳴っているのをなんとかしたい場合にお試しください。package.jsonに依存パッケージをinstallして対処するので、package.jsonが肥大化する可能性があります。
node-forge
をなんとかする
package-lock.jsonの中身を見て一つ一つ対応していきます。まずはnode-forge
を見ていきます。grepをかけるとselfsignedというパッケージがnode-forge
を読み込んでいます。
"selfsigned": {
"version": "1.10.7",
"resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz",
"integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==",
"dev": true,
"requires": {
"node-forge": "0.9.0"
}
},
なのでselfsignedのパッケージを更新します。package-lock.jsonの中身は直接更新してはいけないので、package.jsonにselfsignedのパッケージを追加します
npm install -D selfsigned
それに合わせてnode-forge
も更新されます
"selfsigned": {
"version": "1.10.8",
"resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz",
"integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==",
"dev": true,
"requires": {
"node-forge": "^0.10.0"
}
},
websocket-extensions
をなんとかする
次にpackage-lock.jsonをwebsocket-extensions
でgrepかけます。
"websocket-driver": {
"version": "0.6.5",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
"integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=",
"dev": true,
"requires": {
"websocket-extensions": ">=0.1.1"
}
},
依存しているのはwebsocket-driverですが、0.1.1以上であればOKなのでwebsocket-extensions
を更新します。
npm install -D websocket-extensions
最後は動作確認しましょう
おわり
npm audit fix
で全部直る世界になって欲しい
Dependabotが健気にPRだしてくれるけどマージすると動かなくなるのなんで?
Discussion