🦟 Исправление уязвимостей зависимостей NPM пакетов |

🦟 Исправление уязвимостей зависимостей NPM пакетов

Мануал

Описание инструмента

Команда  отправляет описание зависимостей, настроенных в вашем проекте, в реестр по умолчанию и запрашивает отчет об известных уязвимостях.

Возвращенный отчет содержит инструкции о том, как действовать в отношении этой информации.

Команда завершится с кодом выхода 0, если уязвимостей не обнаружено.

Вы также можете сделать так, чтобы npm автоматически исправлял уязвимости, запустив npm audit fix

Обратите внимание, что некоторые уязвимости не могут быть исправлены автоматически и требуют ручного вмешательства или проверки.

Также обратите внимание, что поскольку исправление аудита npm запускает полноценную установку npm изнутри, все конфиги, которые применяются к установщику, будут также применяться к установке npm – так что такие вещи, как исправление аудита npm –package-lock-only будут работать как положено.

Уязвимости

Время от времени после установки зависимостей ваших проектов, npm i, вы будете сталкиваться с ошибкой от NPM, которая выглядит примерно так:

┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low           │ Regular Expression Denial of Service                         │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ braces                                                       │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ jest [dev]                                                   │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ jest > jest-cli > micromatch > braces                        │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/786                       │
└───────────────┴──────────────────────────────────────────────────────────────┘


found 62 low severity vulnerabilities in 20610 scanned packages
  62 vulnerabilities require semver-major dependency updates.
На самом деле это очень короткий пример типичного предупреждения об уязвимости.
Как видно из текста под уязвимостью система говорит нам:
found 62 low severity vulnerabilities in 20610 scanned packages
  62 vulnerabilities require semver-major dependency updates.

Это означает, что в этом примере будет еще 61 уязвимость, варьирующиеся от low до high , и, конечно же, самая опасная уязвимость – high.

Для получения дополнительной информации о любой из этих уязвимостей есть также ссылка на уязвимость в NPM в разделе «More info»  этого предупреждения.

Поначалу может показаться странным, как правильно исправить эти уязвимости.

На самом деле NPM предоставляет сервис, встроенный в NPM, который должен автоматически устранять эти проблемы, npm audit fix, но я обнаружил, что это будет работать очень посредственно и оставит вам почти столько же уязвимостей, что и раньше.

Фактически, вот пример того, что произошло после того, как я запустил npm audit fix:

fixed 0 of 62 vulnerabilities in 20610 scanned packages
  1 package update for 62 vulns involved breaking changes
  (use `npm audit fix --force` to install breaking changes; or refer to `npm audit` for steps to fix these manually)
NPM дает нам возможность использовать флаг –force, то есть npm audit fix –force но NPM предупредит вас об использовании этого флага:
npm audit fix --force
npm WARN using --force I sure hope you know what you are doing.
Так что же нам делать?
Если наш менеджер пакетов не может исправить эти уязвимости, то, конечно, нам не повезло, и мы должны найти способ выжить с этими уязвимостями, надеясь, что никто не решит использовать их против нашего проекта.

Исправление

Обновляйте пакеты по одному с помощью команды, предложенной NPM, вместо запуска команды npm audit fix –force.

Например, npm install –save-dev jest@24.8.0.

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

Когда я впервые увидел всеэ то, это был гигантский список предупреждений, и, будучи ленивым, я даже не удосужился прокрутить список проблем.

Если вы просто продолжите прокручивать внутри своей консоли до самой первой проблемы, вы фактически столкнетесь с исправлением, и да, как и следовало ожидать, это так же просто, как обновить пакет, вызывающий проблему.

 npm audit --fix

                       === npm audit security report ===                        

# Run  npm install --save-dev jest@24.8.0  to resolve 62 vulnerabilities
SEMVER WARNING: Recommended action is a potentially breaking change
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low           │ Regular Expression Denial of Service                         │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ braces                                                       │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ jest [dev]                                                   │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ jest > jest-cli > jest-config > babel-jest >                 │
│               │ babel-plugin-istanbul > test-exclude > micromatch > braces   │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/786                       │
└───────────────┴──────────────────────────────────────────────────────────────┘

... 61 more vulerabilities ...
Прямо перед описанием уязвимости вы увидите текст # Run npm install –save-dev jest@24.8.0 to resolve 62 vulnerabilities чтобы устранить 62 уязвимости, и это именно то, что нам нужно.
Вы также можете заметить, что в следующей строке написано SEMVER WARNING: SEMVER WARNING: Recommended action is a potentially breaking change.
Выполнение этой команды вручную вместо использования иnpm audit fix –force позволяет нам точно знать, какие пакеты мы обновляем.
Это очень полезно для скриптов, в котором обновление этих пакетов действительно приводит к серьезным изменениям.

Заключение

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

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

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. Руслан

    НЕ КАК НЕ МОГУ РЕШИТЬ ЭТУ ПРОБЛЕМУ
    https://i.imgur.com/067KxR8.png
    подскажите пожалуйста как решить проблему

    Ответить
    1. Буги-вуги

      Удалось решить?

      Ответить