[解決済み] npmの脆弱性を手動で修正する方法とは?
質問
を実行すると
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]",
私は、バージョンは "_id" で表示され、 "_from" では表示されないと考えています。したがって、バージョンは正しいですが、脆弱性はまだ監査リストに表示されます。
私はまだnode.jsの初心者で、これらのメッセージは私を大いに混乱させます。手動で修正する方法、または何もできないこれらのメッセージを取り除く方法はありますか?
どのように解決するのですか?
lodash-cli
で
devDependencies
は
browser-sync
がプロジェクト内でどのように動作するかには影響しません。
devDependencies
は、パッケージが依存関係としてインストールされた場合、無視されます。
何
audit
のレポートによると、それは
easy-extender
を持っていること
lodash
に依存します。
browser-sync > easy-extender > lodash
それは
は Lodash 3 に依存します。
に依存し、Lodash 4 で問題が修正されました。この問題はフォークすることで解決できます。
easy-extender
をフォークして更新し、NPMパブリックレジストリからパッケージの代わりにインストールすることで問題を解決できます。しかし、この依存関係には、実際の問題はありません。
audit
レポートの重要性は手動で評価されるべきです。ネストされた依存関係がセキュリティリスクを持つとしても、そのリスクをもたらす機能が使われたとは限りません。また、たとえ使用されたとしても、それがどのように使用されるかに起因する実際のリスクを導入することを意味しません。
browser-sync
は開発ツールであり、本番では使用されないので、その脆弱性が悪用されるシナリオはそれほど多くありません。また
プロトタイプの汚染
は脆弱性ではなく、パッケージが良い習慣に従っていないことを示す通知であり、無視することができます。
一般的に、これは報告された脆弱性を修正する方法です。
- サニティチェックを行う
- 本当に問題がある場合、脆弱なパッケージのリポジトリに既存の問題がないか確認します。 と PRs
- 何もない場合は、課題を提出します。
- リポジトリをフォークするか、既存のPRを git 依存 NPM のリリースで修正されるまで
- ネストされた依存関係の場合、ネストのいくつかのレベルでこれを行う
ほとんどの場合、健全性チェックより先に進まないことが予想され、唯一の問題は、"脆弱性" が監査レポートを乱雑にし、実際の脆弱性を隠してしまうことです。
patch-package
は、ネストした依存関係をその場でパッチするのに役立ちますが、これはレポートには影響しません。
Yarn 1 と 2 では、ネストされた依存関係において、特定の依存関係のバージョンを強制することが可能で、それには
resolutions
フィールド
とすると、監査報告書に影響します。次のようにすることも可能でしょう。
を NPM でネイティブに行うことができるかもしれません。
ができるかもしれません。現在、NPM での代替はサードパーティの
npm-force-resolutions
ユーティリティがありますが、これはあまり制御できません。
の解決を強制しています。
.
一緒に動作するように設計されていないネストした依存関係を強制的に使用することで、いつ壊れてもおかしくないことに注意してください。これは特に
npm-force-resolutions
これは鈍器であり、一度に多くのネストした依存関係に影響を与えることができます。
関連
-
[解決済み】Heroku + node.jsのエラー(Webプロセスが起動後60秒以内に$PORTにバインドできなかった)。
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] Yarn にパッケージを強制的に再インストールさせるにはどうしたらいいですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] インストールされているnpmパッケージのバージョンを検索する
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] package.jsonの各依存関係を最新バージョンに更新する方法は?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] sudoを使わずにnpmがエラーを投げるのを修正する方法
-
[解決済み] Node.jsのnpmモジュールをアンインストールするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】モジュール '@babel/core' が見つかりません。
-
[解決済み】Passport.js - エラー: ユーザーのセッションへのシリアライズに失敗しました。
-
[解決済み】NPMインストールエラー:解析中の予期せぬJSON入力の終了 '...nt-webpack-plugin": "0'' 付近。
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
-
[解決済み] npm install エラー - ローカルの発行者証明書を取得できません。
-
[解決済み] S3 Bucket に何かを送信しようとすると、AWS Missing credentials が表示される (Node.js)
-
[解決済み] Json Web Token verify() return jwt malformed
-
[解決済み] NodeJsのSequelizeでautoIncrementはどのように動作するのですか?
-
[解決済み] npm equivalent of yarn resolutions?
-
[解決済み] package-lock.json に記載されていない脆弱な npm パッケージを修正するにはどうしたらいいですか?