きっかけ・背景・問題意識
前から npm install すると、たまに7 vulnerabilities (3 moderate, 4 high)みたいなのが出てくるので、何なのか気になったので調査
調査内容の概要
- 出力されている内容
- 影響と対応方法
調査結果・考察
npm install xxxすると、たまに下記みたいな出力がある。
up to date, audited 603 packages in 1s 150 packages are looking for funding run `npm fund` for details 7 vulnerabilities (3 moderate, 4 high) To address issues that do not require attention, run: npm audit fix To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details.
これが何なのか、まずは調べる。
英単語から察するに、セキュリティ系だと思ったが、英文で迷ったら、とりあえずdeeplで翻訳してみる。そしたら、以下だった。
最新の監査済みパッケージ:603個(1秒で完了) 資金調達中のパッケージ:150個 詳細は `npm fund` を実行 脆弱性:7件(中程度3件、高危険度4件) 対応不要な問題を処理するには以下を実行: npm audit fix すべての問題(互換性のない変更を含む)を処理するには以下を実行: npm audit fix --force 詳細は `npm audit` を実行してください。
なんか警告っぽいの理解してたので、セキュリティ系のエラーだろうなとは思っていたが、やっぱりセキュリティ周りだった。
インストールできたけど、脆弱性がありますっていう指摘らしい。
ついでに、メンテナンス支援金を募っているパッケージだが、150個ある状態になっている。 ※150 packages are looking for fundingのところ
7 vulnerabilities (3 moderate, 4 high) が、含まれている脆弱性情報。これなら、7件の脆弱性が検出され、そのうち3件は中程度、4件は高リスク
npm audit について調べる必要がありそう。
npm audit について
調べた結果を引用すると、意味合いとしては下記
npm auditは、パッケージの脆弱性を確認するコマンドです。
出力されているnpm audit のコマンドの内容調査は、"解決策・対応策(または今後の対応)"の項目を参照
npmの脆弱性データベースをもとに依存関係をスキャンしてくれる。
脆弱性データベースが具体的にどこを見ているのかまでは、調べても確かな情報源に辿りつけなかった。。。
解決策・対応策(または今後の対応)
出力されていたコマンドの npm audit fix が、脆弱性に対応するもののように見えたので、具体的にどういうことをするのか調査。
npm audit fix がやっていることは、以下 ※調査結果からの引用
npm audit fixコマンドはプロジェクト内にある脆弱性を自動で修正してくれるコマンドです。
これで解決できるが、変更が入り、予想外の依存関係更新を含むことがあるため、後戻りできるように、git commitなどバージョン管理システムでコミットをするのが無難そう。
自分は面倒くさいので、コミットせずにやってしまいそうだ。だが、やっぱり事故ると怖いので、次からはちゃんとcommitしておこうかと思う。
また、このコマンドで完全解決できるわけではない。
npm audit fixでは、基本的にはメジャーバージョンの変更なしで解決できるものを対象範囲としているため、問題が残ることがある。 ※調査結果から一部引用
npm audit fix --force で対応可能だが、破壊的な更新を行う可能性もあるため注意が必要になる。
これをやる場合は、ガチで後戻りできるようにコミットするなどしたほうがいい。
昔、分からず--forceつけてやって、動かなくなった記憶がある。
その時は、バージョン管理とかしてなかったので、もう作る気力を失ってやる気が失せた。
使ってみて動かなかったときの、期待を裏切られた感じは、ダメージでかい。。。
まとめ・学び
npm install して、上記の内容が出力されていたが、使えはしていたので、あまり気にしてなかった。
なんか無茶苦茶長い文章出てきてるな~くらいの感覚だった。
セキュリティ問題が叫ばれる昨今、ちゃんとこういう問題は見ておかないといけないと感じた。
というか、コマンド実行した際に出力される内容くらい確認しとけよって話ではあるが。。。
今後はnpm install時に出た警告をスルーせず、ちゃんとnpm auditを見るクセをつけたい。
参考情報
【npm audit】npm package の脆弱性対応してますか?
「npm audit」って何?って時に少し調べた時のノート - Programming Self-Study Notebook
「npm audit」って何?って時に少し調べた時のノート - Programming Self-Study Notebook