Как исправить уязвимости 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": "[email protected]^4.17.4",
  "_id": "[email protected]",

Я считаю, что версия указана в "_id", а не в "_from", поэтому версии верны, но уязвимости все еще появляются в списке аудита.

Я все еще новичок в node.js, и эти сообщения меня сильно смущают. Есть ли способ исправить это вручную или избавиться от тех сообщений, с которыми я ничего не могу сделать?

Ответы

Ответ 1

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 - это инструмент разработки, который не используется в рабочей среде, существует не так много сценариев, где его уязвимости можно было бы использовать. А Prototype Pollution вовсе не является уязвимостью, это просто уведомление о том, что пакет не следует передовым методам, его можно игнорировать.

Как правило, это способ исправить обнаруженные уязвимости:

  • Сделать проверку вменяемости
  • В случае, если это реальная проблема, проверьте хранилище уязвимого пакета на наличие проблем и PR
  • Если их нет, отправьте вопрос
  • Разветките репозиторий или используйте существующий PR в качестве git-зависимости, пока он не будет исправлен в выпуске NPM
  • В случае вложенных зависимостей, делайте это на нескольких уровнях вложенности

В большинстве случаев ожидалось, что вы не продвинетесь дальше проверки здравомыслия.

patch-package может помочь в исправлении вложенных зависимостей на месте, но это не повлияет на отчет audit.

Ответ 2

npm install [email protected] -g, просто используйте эту команду, надеюсь, она решит вашу проблему.

Ответ 3

0 информация работает, если она оканчивается на 1 verbose cli ['D:\New folder (2)\N\node.exe', 1 vers cli 'C:\Users\ELCOT\AppData\Roaming\npm\node_modules\npm\bin\npm-cli.js ', 1 verbose cli' start '] 2 информация с использованием [email protected] 3 информация с использованием [email protected] 4 verbose run-script [' prestart ',' start ',' poststart ' ] 5 жизненный цикл информации [email protected]~prestart: [email protected] 6 подробный жизненный цикл [email protected]~prestart: небезопасный -p ошибка в жизненном цикле true 7 подробный жизненный цикл [email protected] ~ предварительный запуск: PATH: C:\Users\ELCOT\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin; D:\Новая папка (2)\angular\to_do_list\todolist\node_modules.bin; C:\WINDOWS\system32; C:\WINDOWS; C:\WINDOWS\system32\Wbem; C:\WINDOWS\system32\WindowsPowerShell\v1.0 \; C:\WINDOWS\system32\OpenSSH \; D:\Новая папка (2)\N \; C:\Program Files\Git\cmd; C:\Program Files\dotnet \; C:\Program Files\Microsoft SQL Server\130\Tools\Binn \; C:\Users\ELCOT\AppData\Local\Microsoft\WindowsApps; C:\Users\ELCOT\AppData\Roaming\НПМ; D: \Новая папка (2)\Microsoft VS Code\bin 8 подробный жизненный цикл [email protected]~prestart: CWD: D:\Новая папка (2)\angular\to_do_list\todolist 9 глупый жизненный цикл [email protected] 0 ~ предварительный запуск: Args: ['/d/s/c', 'npm install'] 10 глупых жизненных циклов [email protected]~prestart: возвращено: код: 0 сигнал: нулевой 11 информация жизненного цикла [email protected] ~ начало: [email protected] 12 подробный жизненный цикл [email protected]~start: небезопасный -p истина в жизненном цикле true 13 подробный жизненный цикл [email protected]~start: PATH: C:\Users\ELCOT\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin; D:\Новая папка (2)\angular\to_do_list\todolist\node_modules.bin; C:\WINDOWS\system32; C:\WINDOWS; C:\WINDOWS\System32\Wbem; C:\WINDOWS\System32\WindowsPowerShell\v1.0 \; C:\WINDOWS\System32\OpenSSH \; D:\Новая папка (2)\N \; C:\Program Files\Git\cmd; C:\Program Files\dotnet \; C:\Program Files\Microsoft SQL Server\130\Tools\Binn \; C:\Users\ELCOT\AppData\Local\Microsoft\WindowsApps; C:\Users\ELCOT\AppData\Roaming\npm; D:\New f более старый (2)\Microsoft VS Code\bin 14 подробный жизненный цикл [email protected]~start: CWD: D:\New folder (2)\angular\to_do_list\todolist 15 глупый жизненный цикл [email protected]~ start: Args: ['/d/s/c', 'http-сервер -a localhost -p 8000 -c-1./app'] 16 глупых жизненных циклов [email protected]~start: возвращено: код: 1 сигнал: ноль 17 info жизненный цикл [email protected]~start: не удалось выполнить стартовый сценарий 18 verbose stack Ошибка: [email protected] start: http-server -a localhost -p 8000 -c-1./app 18 многословный стек Выход из состояния 1 18 многословный стек в EventEmitter. (C:\Users\ELCOT\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\index.js: 301:16) 18 многословных стеков на EventEmitter.emit(events.js: 189: 13) 18 многословных стек в ChildProcess. (C:\Users\ELCOT\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js: 55: 14) 18 подробных стеков в ChildProcess.emit(events.js: 189: 13) 18 многословных стеков в MaybeClose (внутренняя /child_process.js: 970: 16) 18 многословных стеков в Process.ChildProcess._handle.onexit (внутренняя /child_process.js: 259: 5) 19 многословных pkgid [email protected] 20 многословных cwd D:\New folder (2)\angular\to_do_list\todolist 21 подробный Windows_NT 10.0.17134 22 подробный argv "D:\New folder (2)\N\node.exe" "C:\Users\ELCOT\AppData\Роуминг\npm\node_modules\npm\bin\npm-cli.js "" start "23 подробный узел v10.15.3 24 подробный npm v6.9.0 25 код ошибки ELIFECYCLE 26 ошибка errno 1 27 ошибка [email protected] start: http-server -a localhost -p 8000 -c-1./app 27 error Состояние выхода 1 28 error Ошибка при запуске сценария http-server -a localhost -p 8000 -c-1./app. 28 ошибка Это, вероятно, не проблема с npm. Вероятно, есть дополнительные выходные данные регистрации. 29 подробный выход [1, правда]

Ответ 4

Большая часть проблемы возникла в моей системе из-за пакета npm. Я пытался,

npm un npm

Вам не нужно устанавливать снова.

Просто запустите программу снова. Это сработало для меня.