Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
17
Help us understand the problem. What is going on with this article?
@mi-miya

npm audit fixで解決しないとき

随分古いバージョンのパッケージを使っていたシステムで、node.jsをアップデートをしたときに

found 98 vulnerabilities (39 low, 13 moderate, 46 high) in 10622 scanned packages
  94 vulnerabilities require semver-major dependency updates.
  4 vulnerabilities require manual review. See the full report for details.

のような文言が出力されましたので、その対応を行います。

大体の場合は『npm audit fix --force』をすれば解決するようですが、今回は一部上手くいかないものがあったので、直接ファイルをイジイジして治すことにします。

(この辺はあまり自信がないので、もしかしたら間違えてるかもです)

どのパッケージが問題なのか調べる

まずは、問題の原因であるパッケージの確認を行います。

$ npm audit
=> 
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High          │ Prototype Pollution                                          │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ lodash                                                       │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in>=4.17.12                                                    │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ kouto-swiss                                                  │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ kouto-swiss > prefiks > lodash                               │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://npmjs.com/advisories/1065                            │
└───────────────┴──────────────────────────────────────────────────────────────┘

こんな表示になるかと思います。

More infoのURLを参照すれば、どのような問題が起きていて、どのように対応すればよいかが出てきます。

今回の私の場合だと、lodashなるパッケージを、Patched in の欄で指定されているバージョンに更新すれば解決するようです。

では、今入っているlodashのバージョンを確認してみます。

$ npm ls lodash
=> 
willjekylltemplate@1.0.0 /home/misato/Documents/Blogs/for-misato-fans
├─┬ browser-sync@1.9.2
│ ├─┬ dev-ip@0.1.7
│ │ └── lodash@4.17.12
│ ├─┬ easy-extender@2.3.4
│ │ └── lodash@4.17.15 
│ ├─┬ glob-watcher@0.0.7
│ │ └─┬ gaze@0.5.2
│ │   └─┬ globule@0.1.0
│ │     └── lodash@4.17.12
├─┬ grunt@0.4.5
│ ├─┬ findup-sync@0.1.3
│ │ └── lodash@4.17.12
│ ├─┬ grunt-legacy-util@0.2.0
│ │ └── lodash@4.17.12
│ └── lodash@4.17.12
└─┬ kouto-swiss@0.11.14
  └─┬ prefiks@0.3.3
    └── lodash@2.4.2 <= こいつが原因

npm auditでは、lodashの推奨バージョンは >=4.17.12 になっていましたが、npm ls lodashで見てみると、ひとつだけ 2.4.2 となっています。

こいつを直します。

package-lock.json でバージョンを修正

package-lock.jsonで"lodash": "2.4.2"を検索すると、下記のような感じでヒットしました。

  "requires": {
    "accord": "0.12.0",
    "gulp-util": "3.0.8",
    "lodash": "2.4.2",
    "replace-ext": "0.0.1",
    "stylus": "0.54.7",
    "through2": "0.6.5"
  }

これを npm audit で調べた推奨バージョンに書き換える↓

  "requires": {
    "accord": "0.12.0",
    "gulp-util": "3.0.8",
    "lodash": "4.17.12",
    "replace-ext": "0.0.1",
    "stylus": "0.54.7",
    "through2": "0.6.5"
  }

後は、下記のコマンドを実行する。

$ sudo rm -r node_module
  => node_moduleの削除

$ npm install

私の環境では、これで解決しました!!

誰かの参考になれば幸いです。

17
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
mi-miya

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
17
Help us understand the problem. What is going on with this article?