npm install後のhigh severity vulnerability / Prototype Pollutionの原因と解決法

LaravelとVue連携

npm installを行ったところ、【high severity vulnerability】というメッセージが表示。

どうやら【Prototype Pollution】の危険性があるとのことでした。

実際に解決した方法と、Prototype Pollutionについて英語記事を翻訳して解説していきます。

npm install後のhigh severity vulnerabilityの解決法

まずエラーがでた状況について。

わたしはLaravel8を使っていますが、vue.jsを使うためにnpm installを実行しました。

すると、下記の警告が。

found 1 high severity vulnerabilityrun npm audit fix to fix them, or npm audit for details

 

英語の意味「かなり深刻な脆弱性を発見したよ。」

「修正するには npm audit fix を実行してね。詳細は npm audit を見てね。」

 

じゅんこ
じゅんこ

highが赤文字になっていて、不穏な感じ・・・

とりあえず npm audit を実行。

すると、次のように詳細が表示されました。

High Prototype Pollution

Package object-path

Dependency of resolve-url-loader [dev]

Path resolve-url-loader > adjust-sourcemap-loader > object-path

More info https://npmjs.com/advisories/1573

一番上の【Prototype Pollution】が原因っぽいですね。

とりあえず、「npm audit fix」を行って修正を試みることにします。

すると、結構あっさり修正できた模様。

もういちど npm auditを実行すると、次のような結果になりました。

found 0 vulnerabilities

「脆弱性はゼロだったよ」とのこと。

じゅんこ
じゅんこ

とりあえず、良かった。

High Prototype Pollutionの詳細と対策

解決したものの、結局これは何だったんだ。

【Prototype Pollution】でググってみると、こんな不穏なタイトルの記事が出てきました。

Prototype pollution: The dangerous and underrated vulnerability impacting JavaScript applications
「プロトタイプ汚染:JavaScriptに影響を与えるキケンで過小評価されている脆弱性

Prototype PollutionはJavaScriptの人気ライブラリのセキュリティホールを狙った攻撃。

以前からあるものの、2019年前半に物議を醸しだしていたようです。

最悪の場合、Webアプリケーションのクラッシュに至ることも。

Prototype Pollutionはどう攻撃されるか

インスタンスの __proto__ プロパティからアクセスされます。

下記のように__proto__ が含まれている場合、マージをしないようにすればOK。

Prototype Pollutionは npm パッケージを通じて入ってくるか

jQuery, lodash, hoekなど、有名なライブラリはプロトタイプ汚染に対処するため、更新されています。

また今回のように【npm-audit】を実施すれば、事前にチェックでき、ほぼ修正も可能です。

修正に時間がかかったり、更新するとプロジェクト全体に影響がある場合などは、英語ですが、下記サイトが役立つようです。

no-pollution
Prevent prototype pollution by sanitizing all string inputs to the JSON parser

まとめ

今回のまとめLow vulnerabilityの警告がでたら npm audit で原因究明する

High Prototype Pollution は npm audit fix で修正を試みる

これで大体なおるが、この手の問題はまた起こる危険性がある

JavaScriptを使う上では、こういったセキュリティホールの問題は避けて通れないようです。

常に警戒をしておかなきゃ、ということですね。

 

★今回お世話になったサイトはこちら★

node_modules “What is prototype pollution and why is it such a big deal?

The Daily Swig “Prototype pollution: The dangerous and underrated vulnerability impacting JavaScript applications

 

 

コメント

タイトルとURLをコピーしました