Как проверить только высокие уязвимости при использовании "аудита 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
В
--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 для уровня аудита, и вы великолепны.