Simplemente eliminando el archivo package-lock.json y luego npm install funciona bien.
Jitendra Pawar
Respuestas:
189
tldr;
¡Santo cielo! Resulta que el paquete event-stream tenía una vulnerabilidad que permitía a un pirata informático robar bitcoins.
Para solucionarlo, debe actualizar su event-streampaquete.
Elimina la node_modulescarpeta.
Elimina el package-lock.jsonarchivo.
Corre npm install.
Esto debería actualizar sus paquetes a una versión segura y debería estar listo.
Y aquí está la respuesta oficial del blog de NPM:
Detalles sobre el incidente del flujo de eventos Este es un análisis del incidente del flujo de eventos del que muchos de ustedes se dieron cuenta a principios de esta semana. npm actúa de inmediato para abordar las inquietudes operativas y los problemas que afectan la seguridad de nuestra comunidad, pero normalmente realizamos un análisis más exhaustivo antes de discutir los incidentes; sabemos que ha estado esperando.
En la mañana del 26 de noviembre, el equipo de seguridad de npm recibió una notificación de un paquete malicioso que se había introducido en event-stream, un paquete popular de npm. Después de clasificar el malware, npm Security respondió eliminando flatmap-stream y [email protected] del Registro y asumiendo la propiedad del paquete event-stream para evitar más abusos.
El paquete malicioso era la versión 0.1.1 de flatmap-stream. Este paquete fue agregado como una dependencia directa del paquete event-stream por un nuevo mantenedor el 9 de septiembre de 2018, en la versión 3.3.6. El paquete event-stream se usa ampliamente, pero el código malicioso apuntaba a los desarrolladores de una empresa que tenía una configuración de entorno de desarrollo muy específica: ejecutar la carga útil en cualquier otro entorno no tiene ningún efecto. Esta orientación específica significa que, en última instancia, la mayoría de los desarrolladores no se verían afectados incluso si hubieran instalado por error el módulo malicioso.
El código inyectado se dirige a la aplicación Copago. Cuando un desarrollador de Copay ejecuta uno de sus scripts de compilación de versiones, el código resultante se modifica antes de incluirse en la aplicación. El código fue diseñado para recolectar detalles de cuentas y claves privadas de cuentas que tienen un saldo de más de 100 Bitcoin o 1000 Bitcoin Cash.
La respuesta inicial de Copay fue que no se lanzó al público ninguna compilación que contenga este código malicioso, pero ahora tenemos la confirmación de Copay de que "el código malicioso se implementó en las versiones 5.0.2 a 5.1.0".
El ataque Este ataque comenzó como un ataque de ingeniería social. El atacante, haciéndose pasar por mantenedor, se hizo cargo del mantenimiento del módulo de flujo de eventos.
Los detalles técnicos Aquí hay algunos detalles técnicos que conocemos, para aquellos de ustedes interesados en esto.
El código inyectado:
Leer en AES datos encriptados de un archivo disfrazado como un dispositivo de prueba Tomó la descripción del paquete npm del módulo que lo importó, usando una variable de entorno configurada automáticamente Usó la descripción del paquete como clave para descifrar una parte de los datos extraídos del archivo disfrazado Los datos descifrados formaban parte de un módulo, que luego se compilaba en la memoria y se ejecutaba.
Este módulo realizó las siguientes acciones:
Descifrado otro fragmento de datos del archivo disfrazado Concatenó un pequeño prefijo comentado desde el primer fragmento descifrado hasta el final del segundo fragmento descifrado Realizó tareas de decodificación menores para transformar el bloque de código concatenado de JS no válido a JS válido (creemos que esto fue hecho para evadir la detección mediante herramientas de análisis dinámico) Escribió este bloque procesado de JS en un archivo almacenado en una dependencia que sería empaquetado por los scripts de compilación: El fragmento de código que se escribió era el código malicioso real, destinado a ser ejecutado en dispositivos propiedad de los usuarios finales de Copay.
Este código haría lo siguiente:
Detectar el entorno actual: Móvil / Cordova / Electron Verificar los saldos de Bitcoin y Bitcoin Cash en la cuenta de copago de la víctima Si el saldo actual era superior a 100 Bitcoin o 1000 Bitcoin Cash: Recolectar los datos de la cuenta de la víctima en su totalidad Recolectar las claves privadas de copago de la víctima Envíe los datos de la cuenta de la víctima / claves privadas a un servicio de recolección que se ejecuta en 111.90.151.134. Para los usuarios de la aplicación Copay, bitpay recomienda, "Si está utilizando cualquier versión de 5.0.2 a 5.1.0, no debe ejecutar ni abrir la aplicación Copay".
Para los usuarios de npm, puede verificar si su proyecto contiene la dependencia vulnerable ejecutando npm audit. Si ha instalado la versión afectada de este flujo de eventos, le recomendamos que actualice a una versión posterior lo antes posible.
En realidad, no necesitamos actualizar todos los paquetes que dependen de [email protected].
Puede abrir package-lock.json, eliminar todas las referencias de flujo de eventos y npm installvolver a llamar . Será más rápido.
Después de eso, npm shrinkwrap && mv npm-shrinwrap.json package-lock.jsondebería actualizar solo las referencias del flujo de eventos y no todo el archivo
Como se mencionó en los comentarios, el problema subyacente fue que package-lock.json(el archivo de bloqueo) contenía un paquete en desuso. Eliminar el archivo de bloqueo y reinstalar las dependencias resolvió el problema.
La forma más rápida de hacerlo son estos 2 pasos:
eliminar el package-lock.jsonarchivo
escriba npm i(o npm install) para reinstalar las dependencias
Respuestas:
Para solucionarlo, debe actualizar su
event-stream
paquete.node_modules
carpeta.package-lock.json
archivo.npm install
.Esto debería actualizar sus paquetes a una versión segura y debería estar listo.
Y aquí está la respuesta oficial del blog de NPM:
fuente
npm list event-stream
y actualice cualquier paquete de nivel superiorEn realidad, no necesitamos actualizar todos los paquetes que dependen de [email protected].
Puede abrir
package-lock.json
, eliminar todas las referencias de flujo de eventos ynpm install
volver a llamar . Será más rápido.Después de eso,
npm shrinkwrap && mv npm-shrinwrap.json package-lock.json
debería actualizar solo las referencias del flujo de eventos y no todo el archivofuente
Siga los siguientes métodos:
Eliminar los archivos node_modules y package_lock.json
Ejecute npm list event-stream
fuente
Resuelvo este problema con los siguientes pasos:
event-stream
hoja, por ejemplo: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 | | `-- [email protected] 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 | | `-- [email protected]
fuente
He actualizado npm-run-all de 4.1.3 a 4.1.5 en package.json (eliminar en el flujo de eventos del archivo de bloqueo) Luego, npm install.
fuente
Como se mencionó en los comentarios, el problema subyacente fue que
package-lock.json
(el archivo de bloqueo) contenía un paquete en desuso. Eliminar el archivo de bloqueo y reinstalar las dependencias resolvió el problema.La forma más rápida de hacerlo son estos 2 pasos:
package-lock.json
archivonpm i
(onpm install
) para reinstalar las dependenciasfuente