Когда бегу, 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": "lodash@4.17.10",
Я считаю, что эта версия отображается в "_id", а не в "_from", поэтому версии верны, но уязвимость все еще отображается в списке аудита.
Я все еще новичок в node.js, и эти сообщения меня очень смущают. Есть ли способ исправить это вручную или избавиться от этих сообщений, с которыми я ничего не могу сделать?
Ответы:
lodash-cli
indevDependencies
не влияет наbrowser-sync
работу в вашем проекте,devDependencies
игнорируются, когда пакет устанавливается как зависимость.В
audit
отчете говорится, что этоeasy-extender
имеетlodash
зависимость:Это зависит от Lodash 3 , в то время как проблема была исправлена в Lodash 4. Проблема могла быть решена путем разветвления
easy-extender
, обновления и установки вместо пакета из общедоступного реестра NPM. Но реальной проблемы с этой зависимостью нет.audit
важность отчета следует оценивать вручную. Даже если вложенная зависимость имеет риск безопасности, это не означает, что использовалась функция, которая представляет этот риск. Это также не означает, что даже если он используется, он представляет реальный риск из-за того, как он используется.browser-sync
это инструмент разработки, который не используется в производственной среде, существует не так много сценариев, в которых его уязвимости могут быть использованы. И Prototype Pollution - это вообще не уязвимость, а просто уведомление о том, что пакет не соответствует передовой практике, его можно игнорировать.Как правило, это способ исправить обнаруженные уязвимости:
В большинстве случаев ожидается, что вы не продвинетесь дальше проверки на вменяемость.
patch-package
может помочь исправить вложенные зависимости на месте, но это не повлияет наaudit
отчет.источник
node_modules
, так что развеивание и исправление - единственный способ избавиться от них? И как новый пользователь я не могу этого сделать? Стоит ли сообщать о них разработчикам пакетов?audit
), ответ отвечает на это. Людиnpm audit
как-то жили без . Шансы на то, что они вызовут реальные проблемы с безопасностью приложения, очень низки, но я не могу этого гарантировать, не зная, что это такое и как они используются в вашем приложении.Если вы абсолютно уверены, что хотите пропустить аудит, вы можете сделать это, добавив --no-audit
источник
'npm audit fix' увеличит версию зависимости в package.json, что может привести к нарушению кода. Итак, лучший способ - открыть package-lock.json и обновить версии зависимостей / подзависимостей до требуемой версии. Сохраните package-lock.json в репозитории.
Иногда уязвимости исходят от пакетов разработчика. В этом случае игнорируйте эти уязвимости, поскольку они не обнаруживаются в производственной среде.
источник
Большая часть проблем в моей системе была связана с пакетом npm. Я старался,
Вам не нужно устанавливать заново.
Просто запустите программу еще раз. У меня это сработало.
источник