Правильный способ исправления потенциальной уязвимости безопасности в зависимости, определенной в package-lock.json

Github дал мне эту ошибку в одном из моих репозиториев.

We found a potential security vulnerability in one of your dependencies.
A dependency defined in ./package-lock.json has known security vulnerabilities 
and should be updated.

Зависимость не определена в нашем файле package.json. Насколько я понимаю, не package-lock.json файл package-lock.json и восстановить его. Однако я не вижу другого способа решить эту проблему. Если я убью эту уязвимость, она появится снова через пару дней. Есть идеи? Спасибо!

Ответ 1

Новое: теперь с npm @6 вы можете напрямую запускать

npm audit fix

Старый ответ:

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

npm install package-name

замена имени пакета, очевидно.

Это установит последнюю версию пакета, и очень часто последняя версия устраняет проблему безопасности. Если у вас есть ограничение на версию (например: 1.2), вы всегда можете попробовать:

npm install [email protected]^1.2

и будет установлена последняя исправленная версия

Ответ 2

Чтобы решить эту проблему:

Решение 1. Сначала найдите уязвимость: используя ваш терминал: cd в свой проект, затем запустите "npm ls hoek",

И, наконец: npm install bcrypt @latest

Затем нажмите обновленный проект на git. (Т. Е. Выполните новую фиксацию).

Решение 2:

если первый вариант/решение не решает проблему. Измените версию вручную в своем пакете lock.json. Измените свою версию вручную с 2.16.3 до 4.2.1

"hoek": {
      "version":  "4.2.1",
      "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
      "dev": true

Затем обновите свой проект на GitHub (commit/push). Просто убедитесь, что каждое появление версии hoek в вашей версии package-lock.json изменено на 4.2.1

В качестве альтернативы, если вы можете найти способ изменить версию hoek/update hoek с помощью npm, это сделает вещи намного проще (что-то вроде: npm update @hoek..version).. или удалите определенную зависимость, затем переустановите ее с помощью беседки или НПМ.

Ответ 3

Насколько я понимаю, не удастся удалить файл package-lock.json и восстановить его.

Тем не менее, это то, что обычно делается в этом случае.
См. Например, угловой/угловой-cli выпуск 8534, который разрешен PR 8535.
Это приводит к зависящему проекту, например frees-io/freestyle-opscenter-webclient для обновления своего package-lock.json: PR 31.

Ответ 5

У меня была та же проблема с уязвимостью безопасности в lodash, в проекте, который я строил с использованием пряжи. Github пометил их как проблемы безопасности.

Я попробовал ответ из @rileymanda выше, используя терминал: cd в проект, затем запустил npm ls lodash.

Это обнаружило, что в моем случае ошибка была в реагирующих скриптах. Быстрый Google на наличие проблем с реагирующими скриптами и lodash обнаружил, что это известная проблема.

Я пробовал разные вещи, чтобы исправить с помощью пряжи - все безуспешно. npm ls lodash все еще показывал уязвимую версию lodash в использовании.

Прочитав блог Мэтта Тернбулла об улучшениях в npm, я переключился с пряжи на npm. (Удалить yarn.lock, удалить ./node_modules. Запустить npm install). npm ls lodash теперь показывал последние версии зависимостей - ура! Предан github, и теперь он был счастлив, что уязвимость исчезла.

Похоже, что пряжа может бороться с такими проблемами (или не предназначена).

Если вы столкнулись с этой проблемой при сборке с использованием пряжи, попробуйте переключить [назад] на npm!

Ответ 6

Известные уязвимости безопасности и должны быть обновлены.

С 23 мая 2019 года у вас теперь есть " Dependabot: Автоматические исправления безопасности "

Благодаря интеграции Dependabot мы выпустили автоматические исправления безопасности в виде общедоступной бета-версии.

Автоматические исправления безопасности - это запросы извлечения, генерируемые GitHub для исправления уязвимостей безопасности.
Они автоматизируют утомительную часть рабочего процесса и позволяют разработчикам легко поддерживать свои зависимости в актуальном состоянии.

Подробнее см. В разделе " Настройка автоматических исправлений безопасности ".

Примечание. Автоматические исправления доступны в бета-версии и могут быть изменены.

Вы можете включить автоматические исправления безопасности для любого хранилища, в котором используются предупреждения безопасности и граф зависимостей.
В течение следующих нескольких месяцев, начиная с мая 2019 года, мы автоматически включим автоматические исправления безопасности в каждом хранилище, в котором используются предупреждения безопасности и график зависимостей.

Ответ 7

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

Например,

из package.json см. список ваших зависимостей

{
"name": "ebook-saler",
  "version": "1.0.0",
  "description": "App for selling ebooks",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "author": "Md Shayon",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "express": "^4.17.1",
    "express-handlebars": "^3.1.0",
    "hoek": "^6.1.3",
    "stripe": "^7.5.0"
  }
}

Выполните команду для этого

npm uninstall body-parser express express-handlebars hoek stripe
npm install body-parser express express-handlebars hoek stripe
git commit -m "updated"
git push

Ответ 8

  1. На GitHub перейдите на главную страницу репозитория.
  2. Под именем своего хранилища нажмите Безопасность.
  3. Нажмите на предупреждение, которое хотите просмотреть.
  4. Просмотрите сведения об уязвимости и, если возможно, запрос на извлечение, содержащий автоматическое исправление безопасности.
  5. При желании, если еще нет автоматического исправления безопасности для предупреждения, для создания запроса на устранение уязвимости нажмите "Создать автоматическое исправление безопасности".
  6. Когда вы будете готовы обновить свою зависимость и устранить уязвимость, объедините запрос извлечения.

Смотрите подробности

Ответ 9

попробуйте npm audit fix, это приведет ко многим предупреждениям

затем npm i [package.name]@xxx

например:

"dependencies": {
  "lodash": ">=4.17.13"
}

npm i [email protected]

Ответ 10

Мне нужен хакер Срочно нужен хакер Срочно нужен хакер Срочно нужен хакер