Я пытаюсь развернуть свой проект и внезапно получаю эту ошибку.
npm ERR! 404 не найдено: event-stream@3.3.6
Я пытаюсь развернуть свой проект и внезапно получаю эту ошибку.
npm ERR! 404 не найдено: event-stream@3.3.6
Ответы:
tldr;
Святая корова! Оказывается, в пакете потока событий была уязвимость, которая позволила хакеру украсть биткойны.
Чтобы исправить это, вам нужно обновить свой event-stream
пакет.
node_modules
папку.package-lock.json
файл.npm install
.Это должно обновить ваши пакеты до безопасной версии, и все будет в порядке.
А вот официальный ответ блога NPM:
Подробная информация об инциденте с потоком событий Это анализ инцидента с потоком событий, о котором многие из вас узнали ранее на этой неделе. npm действует незамедлительно, чтобы решить операционные проблемы и проблемы, которые влияют на безопасность нашего сообщества, но мы обычно проводим более тщательный анализ перед обсуждением инцидентов - мы знаем, что вы ждали.
Утром 26 ноября служба безопасности npm была уведомлена о вредоносном пакете, который проник в поток событий, популярный пакет npm. После сортировки вредоносного ПО служба npm Security отреагировала удалением flatmap-stream и event-stream@3.3.6 из реестра и взяла на себя ответственность за пакет потока событий, чтобы предотвратить дальнейшее злоупотребление.
Вредоносный пакет представлял собой flatmap-stream версии 0.1.1. Этот пакет был добавлен как прямая зависимость пакета потока событий новым сопровождающим 9 сентября 2018 г. в версии 3.3.6. Пакет event-stream широко используется, но вредоносный код нацелен на разработчиков в компании, у которой была очень специфическая среда разработки: запуск полезной нагрузки в любой другой среде не имеет никакого эффекта. Этот конкретный таргетинг означает, что в конечном итоге большинство разработчиков не пострадают, даже если они по ошибке установили вредоносный модуль.
Внедренный код предназначен для приложения Copay. Когда разработчик в Copay запускает один из своих сценариев сборки релиза, полученный код модифицируется перед включением в приложение. Код был разработан для сбора данных учетной записи и закрытых ключей от учетных записей с балансом более 100 биткойнов или 1000 биткойн наличными.
Первоначальный ответ Copay состоял в том, что сборки, содержащие этот вредоносный код, не были опубликованы, но теперь у нас есть подтверждение от Copay, что «вредоносный код был развернут в версиях с 5.0.2 по 5.1.0».
Атака Эта атака началась как атака социальной инженерии. Злоумышленник, выдавая себя за сопровождающего, взял на себя обслуживание модуля потока событий.
Технические детали Вот некоторые технические подробности, о которых мы знаем, для тех, кто в этом заинтересован.
Внедренный код:
Чтение зашифрованных данных AES из файла, замаскированного под тестовое приспособление. Получение описания пакета npm модуля, который его импортировал, с использованием автоматически установленной переменной среды. Использование описания пакета в качестве ключа для расшифровки фрагмента данных, полученного из замаскированного файла. Расшифрованные данные были частью модуля, который затем компилировался в памяти и выполнялся.
Этот модуль выполнял следующие действия:
Расшифровал еще один фрагмент данных из замаскированного файла. Объединение небольшого закомментированного префикса из первого расшифрованного фрагмента в конец второго расшифрованного фрагмента. Выполнены незначительные задачи декодирования для преобразования объединенного блока кода из недопустимого JS в допустимый JS (мы считаем, что это было сделано, чтобы избежать обнаружения инструментами динамического анализа) Записал этот обработанный блок JS в файл, хранящийся в зависимости, которая будет упакована сценариями сборки: записанный фрагмент кода был фактическим вредоносным кодом, предназначенным для запуска на устройствах, принадлежащих конечным пользователям Copay.
Этот код будет делать следующее:
Определите текущую среду: Mobile / Cordova / Electron.Проверьте остатки биткойнов и биткойн-наличных на счете доплаты жертвы.Если текущий баланс был больше 100 биткойнов или 1000 биткойн-наличных: соберите данные учетной записи жертвы полностью. Получите личные ключи доплаты жертвы. Отправьте данные учетной записи / закрытые ключи жертвы в службу сбора, работающую на 111.90.151.134. Для пользователей приложения Copay bitpay рекомендует: «Если вы используете любую версию от 5.0.2 до 5.1.0, вам не следует запускать или открывать приложение Copay».
Для пользователей npm вы можете проверить, содержит ли ваш проект уязвимую зависимость, запустив npm audit. Если вы установили затронутую версию этого потока событий, мы рекомендуем как можно скорее выполнить обновление до более поздней версии.
npm list event-stream
и обновите любые пакеты верхнего уровня
На самом деле нам не нужно обновлять все пакеты, зависящие от event-stream@3.3.6.
Вы можете открыть package-lock.json
, удалить все ссылки на поток событий и позвонить npm install
снова. Так будет быстрее.
После этого npm shrinkwrap && mv npm-shrinwrap.json package-lock.json
следует обновить только ссылки на поток событий, а не весь файл.
Следуйте нижеприведенным методам:
Удалите файлы node_modules и package_lock.json
Запустить поток событий npm list
Я решаю эту проблему следующими шагами:
event-stream
листа, например:
45 silly saveTree +-- nodemon@1.18.4
45 silly saveTree | +-- chokidar@2.0.4
45 silly saveTree | +-- pstree.remy@1.1.0
45 silly saveTree | | `-- ps-tree@1.2.0
45 silly saveTree | | `-- event-stream@3.3.6
45 silly saveTree | | +-- duplexer@0.1.1
45 silly saveTree | | +-- from@0.1.7
45 silly saveTree | | +-- pause-stream@0.0.11
45 silly saveTree | | `-- split@0.3.3
Как упоминалось в комментариях, основная проблема заключалась в том, что package-lock.json
(файл блокировки) содержал устаревший пакет. Удаление файла блокировки и повторная установка зависимостей разрешили проблему.
Самый быстрый способ сделать это - это два шага:
package-lock.json
файлnpm i
(или npm install
), чтобы переустановить зависимости