При обсуждении недавней атаки вредоносного ПО с использованием популярный пакет NPM (и после удаления этого пакета из нашей кодовой базы), я начал исследовать способы ограничения npm install
команд. До сих пор я не нашел способа ограничить то, что может установить разработчик.
Есть две причины, по которым это будет выгодно всем:
- Получите дополнительный уровень защиты от установки вредоносных пакетов.
- Избегайте непреднамеренной установки пакетов, когда имя пакета было опечатано.
Что касается № 1, идея состоит в том, что каждая команда может создать одобренный список имен пакетов, которые можно сверить с перед npm install
фактическим запуском — по сути, создавая некий процесс проверки для пакетов npm.
Что касается № 2, на нашу команду действительно повлияло удаление этого пакета из NPM, но единственная причина, по которой у нас когда-либо была эта зависимость, заключается в том, что пакет был установлен случайно и какое-то время оставался незамеченным. Вот что, я думаю, произошло:
- Разработчик хотел установить пакет и намеревался ввести
npm install --save somepackagehere
(обратите внимание на тире тире) - Разработчик случайно ввел
npm install save
(без тире тире), установив сохранение пакет npm, который зависит от event-stream, который зависит от flatmap-stream.
Версия узла: 9.9.1
Версия NPM: 6.4.1
ВОПРОС
Существует ли существующий способ достичь того, что я описал выше, который не зависит от проверки кода вручную?
npm audit
. - person Estus Flask   schedule 28.11.2018npm install --save
вы можете вручную отредактировать файл package.json с нужными библиотеками. Также никогда не используйте морковку вверх ^, потому что она автоматически обновляет все пакеты до следующей минорной версии. Помимо этого, нужно внимательно следить за тем, что вы устанавливаете. Но, как и вредоносное ПО, о котором вы упомянули, оно пролежало в пакете 2-3 месяца и было обнаружено случайно. Таким образом, никакие исследования, которые вы провели, не защитили бы вас от обновления до этой версии, если бы вы не были ленивы и не обновляли свои пакеты часто. - person rhavelka   schedule 28.11.2018npm audit
- person Mathieu K.   schedule 29.11.2018