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

 

 

LaravelとVue連携 Laravel・PHP豆知識・トラブル対策

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中!
会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

【個別サポート実施中】

「本ブログに記載の方法を試してみたけれど、うまくいかない」「コードを見てほしい」という方のために、有償でメールサポートいたします。以下のボタンをクリックして相談フォームにアクセスして下さい。

詳しく見る

Twitter始めました。
スポンサーリンク
40代からプログラミング!

コメント

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