npm install
を実行すると、found 33 vulnerabilities (2 low, 31 moderate) run `npm audit fix` to fix them, or `npm audit` for details
と表示されます。
ただし、npm audit fix
はup to date in 11s fixed 0 of 33 vulnerabilities in 24653 scanned packages 33 vulnerabilities required manual review and could not be updated
を出力します
review
は、ユーザーが修正することを想定していないということですか?
npm audit
を実行すると、次のようなテーブルのリストが表示されます。
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low │ Prototype Pollution │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.17.5 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ browser-sync [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ browser-sync > easy-extender > lodash │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/577 │
└───────────────┴──────────────────────────────────────────────────────────────┘
この例では、リンクページの修復セクションにUpdate to version 4.17.5 or later.
と記載されています。ただし、/node_modules/browser-sync/package.json
には次の行があります。
"devDependencies": {
"lodash-cli": "4.17.5",
}
lodashの依存関係がなくなりました。したがって、すでにv4.17.5になっているはずです。 /node_modules/lodash/lodash.json
行があるvar VERSION = '4.17.10';
もチェックしました。 /node_modules/lodash/package.json
には次の行があります。
"_from": "lodash@^4.17.4",
"_id": "[email protected]",
そのバージョンは「_from」ではなく「_id」で表示されるため、バージョンは正しいものの、脆弱性は監査リストに表示されます。
私はまだnode.jsの初心者であり、これらのメッセージは私をとても混乱させます。手動で修正する方法やそれらのメッセージを取り除く方法はありますか、私は何もできませんか?
devDependencies
のlodash-cli
は、プロジェクトでのbrowser-sync
の動作に影響しません。パッケージが依存関係としてインストールされている場合、devDependencies
は無視されます。
audit
レポートによると、lodash
依存関係を持つのはeasy-extender
です。
browser-sync > easy-extender > lodash
それは Lodash 3に依存 、問題はLodash 4で修正されました。この問題は、easy-extender
をフォークして更新し、NPMパブリックレジストリのパッケージの代わりにインストールすることで修正できます。しかし、この依存関係に実際の問題はありません。
audit
レポートの重要度は手動で評価する必要があります。ネストされた依存関係にセキュリティリスクがある場合でも、このリスクを引き起こす機能が使用されたという意味ではありません。これはまた、たとえそれが使われたとしても、それがどのように使われるかによって本当のリスクをもたらすという意味ではありません。
browser-sync
は本番環境では使用されない開発ツールです。脆弱性が悪用されるシナリオはそれほど多くありません。そして、Prototype Pollutionはぜい弱性ではなく、パッケージが優れた慣行に従っていないという単なる通知であり、無視することができます。
一般的に、これは報告された脆弱性を修正する方法です。
ほとんどの場合、健全性チェックを超えて進むことはないと予想されます。
patch-package
は、ネストされた依存関係をその場でパッチするのに役立ちますが、これはaudit
レポートには影響しません。