Malware 'crossenv' en el registro npm

Como sucede con todos los servicios populares, el servicio de paquetes npm ha sufrido una intrusión de malware que ha sido detectada y solucionada en gran parte gracias a la gran comunidad de usuarios de nodejs.

Os pediría que revisáseis vuestros desarrollos por si habéis caído en el engaño y que en el futuro os aseguréis que los paquetes que usáis provienen de fuentes confiables.

Noticia original en http://blog.npmjs.org/post/163723642530/crossenv-malware-on-the-npm-registry

El 1 de agosto, un usuario reportó a travñes de Twitter un paquete con nombre similar al popular paquete cross-env que estaba enviando variables de entrono desde su contexto de instalación a npm.hacktask.net. Investigamos este reporte inmediatamente y optamos por eliminar el paquete. Investigaciones adicionales nos llevaron a retirar unos 40 paquetes en total.

El 19 de julio un usuario denominado hacktask publicó un número de paquetes con nombres muy similares a algunos de los paquetes más populares de npm. Nos referimos a esta práctica como "typo-squatting". En el pasado, había sido principalmente accidental. En unos cuantos casos hemos visto "typo-squatting" de manera deliberada en autores de librerías que compiten con paquetes existentes. Esta vez, el nombre de los paquetes fue deliberado y malicioso con la intención de recopilar datos útiles de ususarios engañados.

Todos los paquetes de hackstack han sido eliminados del registro npm.

Adam Baldwin de Lift Security también examinó este incidente para ver si había otros paquetes, no propiedad de hacktask, con el mismo código de configuración del paquete. Él tiene cada archivo en el registro público indexado por hash de contenido para hacer escaneos. No encontró ninguna otra instancia de ese archivo específico con esos contenidos.

Exposición

A continuación se muestra una lista de paquetes de hacktask, con un recuento de descargas totales desde el 17 al 31 de julio.

Los conteos de descarga de estos paquetes son mayores en los últimos dos días debido al interés público en el problema. Los números de antes de la exposición son más reveladores del efecto del malware. Tenga en cuenta que 30-40 descargas es típico para cualquier paquete público publicado en el registro, desde espejos de registro que descargan copias automáticamente. A partir de esto se puede ver que el verdadero peligro provenía del paquete crossenv, que tenía casi 700 descargas, con una cierta exposición secundaria del paquete typosquats jquery. Pero incluso en ese caso, la mayoría de las descargas provienen de espejos que solicitan copias de las 16 versiones de crossenv publicadas. Nuestra estimación es que había al menos 50 instalaciones reales de crossenv, probablemente menos.


Babelcli: 42
Cross-env.js: 43
Crossenv: 679
D3.js: 72
Fabric-js: 46
Ffmepg: 44
Gruntcli: 67
Http-proxy.js: 41
Jquery.js: 136
Mariadb: 92
Mongose: 196
Mssql-nodo: 46
Mssql.js: 48
Mysqljs: 77
Nodo-tejido: 87
Node-opencv: 94
Node-opensl: 40
Node-openssl: 29
Nodo-sqlite: 61
Node-tkinter: 39
Nodecaffe: 40
Nodefabric: 44
Nodeffmpeg: 39
Nodemailer-js: 40
Nodemailer.js: 39
Nodemssql: 44
Noderequest: 40
Nodesass: 66
Nodesqlite: 45
Opencv.js: 40
Openssl.js: 43
Proxy.js: 43
Shadowsock: 40
Smb: 40
Sqlite.js: 48
Sqliter: 45
Sqlserver: 50
Tkinter: 45



Si descargó e instaló cualquiera de estos paquetes, debe revocar y reemplazar inmediatamente cualquier credencial que pueda tener en su entorno de shell.

¿Qué harás después?

La dirección de correo electrónico de Hacktask está prohibida en npm. En esta era de direcciones de correo electrónico descartadas, eso no es suficiente para evitar que el ser humano detrás de él lo intente de nuevo, pero sentimos que era un gesto necesario.

Estamos apoyando a Lift Security y el proyecto de seguridad de nodos en su trabajo en curso sobre el análisis estático de paquetes de registro público, pero esto no encontrará todos los problemas. 

Estamos discutiendo varios enfoques para detectar y prevenir la publicación, ya sea accidental o maliciosa, de paquetes con nombres muy cercanos a los paquetes existentes. Hay maneras programáticas de detectar esto, y podríamos usarlas para bloquear la publicación. Estamos utilizando el servicio de Smyte para detectar spam mientras se publica en el registro, y estaremos experimentando con él para detectar otros tipos de violaciones de nuestros términos de servicio.

Sírvase comunicarse con nosotros inmediatamente si encuentra malware en el registro. La mejor manera de hacerlo es enviando un correo electrónico a security@npmjs.com. Actuaremos para solucionar el problema y encontrar problemas relacionados si podemos.