Как проверить только высокие уязвимости при использовании "аудита npm"?

Когда я тебя выполню npm install используя новый npm 6 я получил сообщение о том, что у меня есть некоторые уязвимости:

[!] Найдено 75 уязвимостей [проверено 4867 пакетов]

Серьезность: 66 Низкая | 4 Умеренный | 5 Высокий

Бежать npm audit для более подробной информации

Я побежал npm audit но получил усеченный список уязвимостей.

Как я могу проверить только высокий список уязвимостей?

Спасибо

10 ответов

Не тот ответ, который вы ищете, но он сделает то же самое: npm audit | grep -B 1 -A 10 High

Это сработало для меня:

Показать только высокие

npm audit | grep -E "(High)" -B3 -A10

Показывать как критические, так и серьезные проблемы

npm audit | grep -E "(High | Critical)" -B3 -A10

Посмотрите обсуждение проблемы, где предлагается это решение.

Если вы хотите сделать это в Powershell, просто используйте следующую команду (адаптировано из ответа @stayingcool):

Показать только высокие

npm audit | Select-String -Pattern "High" -Context 0,10

Показывать одновременно высокий и критический

npm audit | Select-String -Pattern "(High | Critical)" -Context 0,10

Изменить: я рекомендую этот (лучший) ответ: /questions/43874475/kak-proverit-tolko-vyisokie-uyazvimosti-pri-ispolzovanii-audita-npm/55115562#55115562

Это не так красиво, но вы можете:

npm audit --parseable | grep high

С одним дополнительным недостатком - любые метаданные пакета / выпуска, содержащие "high" также будут напечатаны.

Результаты будут включать уязвимость с уровнем высокого или более высокого (критического):

npm audit --audit-level=high

Источник: https://docs.npmjs.com/cli/audit#examples

В --audit-level=high флаг не меняет результат аудита npm.

Я отправляю это в html для отчетов, поэтому хочу очистить его дальше:

      npm audit | grep -E "(High | Critical)" -B3 -A11 --color=always | grep -E '┌|│|├|└' --color=never

Но при этом будет потеряно название и «найденные уязвимости» внизу. Мне показалось, что проще всего пару раз запустить npm audit и добавить нужные мне биты в файл.

В итоге получилось что-то вроде этого:

      npm audit | grep '===' --color=never > temp.txt
npm audit | grep -E "(High | Critical)" -B3 -A11 --color=never | grep -E '┌|│|├|└' --color=never >> temp.txt
npm audit | grep -E "(found|scanned packages)" --color=never >> temp.txt
cat temp.txt

Или как броский лайнер (смеется), который также удаляет файл temp.txt:

      npm audit | grep '=== npm audit' --color=never > temp.txt; npm audit | grep -E "(High | Critical)" -B3 -A11 --color=never | grep -E '┌|│|├|└' --color=never >> temp.txt; npm audit | grep -E "(found|scanned packages)" --color=never >> temp.txt; cat temp.txt; rm temp.txt;

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

При выводе в файл npm audit включает цветовые коды ansi, которые нельзя отключить. И это проблема для моих отчетов! Сед можно использовать для их удаления:

      sed -i '' $'s,\x1b\\[[0-9;]*[a-zA-Z],,g' temp.txt

Просто чтобы посчитать максимум (а):

npm audit | grep 'High' | wc -l | rev

Поместите эту строку в свои сценарии аудита:

      "audit": "level=$(npm audit --parseable | grep -E 'high|critical' | wc -l | rev); [ $level == 0 ] && exit 0"

Чтобы объединить несколько других ответов, для меня достаточно хорошо работает следующее :

      npm audit --color=always | grep -i -E "(high|critical)" -B2 -A10

Спасибо за следующие плакаты:

Этот пакет может быть тем, что вы ищете:

https://www.npmjs.com/package/audit-filter

Это позволяет фильтровать по номеру консультативного, что лучше, чем фильтрация по уровню.

$ cat .nsprc
{
  "exceptions": [
    "https://npmjs.com/advisories/532",
    "https://npmjs.com/advisories/577"
   ]
}

Соедините это с конфигом npm для уровня аудита, и вы великолепны.

Другие вопросы по тегам