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. Latest version: 1.0.2, last published: 5 years ago. Start using no-pollution in ...

まとめ

今回のまとめ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の教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

【無料プレゼント】

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

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

詳細はこちらをクリック

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。
Laravel10対応。Laravel11サポートガイドもご用意しています。詳しくは下記ボタンをクリック♪

書籍の詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravel10対応

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる

 

Laravelの教科書限定コミュニティ【Laravelの教科書ラボ】はじめました。
デプロイ講座付。StripeやChatGPT連携など過去10回分のセミナー動画視聴可能。

Laravel実践スキルをのばしたい方におすすめです。

ラボの案内を見てみる

Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました