El desarrollador de la biblioteca de JavaScript node-ipc, que es utilizada por el popular framework vue.js, introdujo deliberadamente una vulnerabilidad de seguridad crítica que, para algunos internautas, destruiría los archivos de sus ordenadores.
Brandon Nozaki Miller, también conocido como RIAEvangelist en GitHub, creó node-ipc, que se obtiene alrededor de un millón de veces a la semana del registro NPM, y se describe como un «módulo de comunicación entre procesos para Node, compatible con sockets Unix, TCP, TLS y UDP».
Al parecer, Miller modificó intencionadamente su código para sobrescribir los datos del sistema anfitrión, y luego cambió el código para mostrar un mensaje que pedía la paz mundial, como protesta por la invasión de Rusia a Ucrania. GitHub declaró el miércoles que se trata de una vulnerabilidad crítica rastreada como CVE-2022-23812.
«El código malicioso pretendía sobrescribir archivos arbitrarios que dependían de la geolocalización de la dirección IP del usuario», dijo la empresa propiedad de Microsoft.
Entre el 7 y el 8 de marzo se publicaron las versiones 10.1.1 y 10.1.2 de la biblioteca. Cuando se importaban como dependencia y se ejecutaban en un proyecto, comprobaban si la máquina anfitriona tenía una dirección IP en Rusia o Bielorrusia y, en caso afirmativo, sobrescribían todos los archivos que podían con el símbolo de un corazón. La versión 10.1.3 se publicó poco después sin esta funcionalidad destructiva; las versiones 10.1.1 y 10.1.2 se eliminaron del registro de NPM.
A continuación se publicó la versión 11, y la semana siguiente la versión 9.2.2. Ambas trajeron un nuevo paquete de Miller llamado peacenotwar, que crea archivos llamados WITH-LOVE-FROM-AMERICA.txt en las carpetas de escritorio y OneDrive de los usuarios. Se supone que este archivo de texto contiene un mensaje del desarrollador que afirma, entre otras cosas, que «la guerra no es la respuesta, no importa lo mala que sea», aunque algunas personas informaron de que el archivo estaba vacío.
Cada vez que las versiones 11 o 9.2.2 de node-ipc son utilizadas como dependencia por otro proyecto, traen peacenotwar y lo ejecutan, dejando archivos en los ordenadores de la gente. La versión 9.2.2 ha desaparecido del registro de NPM junto con las versiones destructivas 10.1.x. Vue.js, por ejemplo, incorporó node-ipc 9.2.2 mientras estaba disponible, ya que 9.x se considera una rama estable, lo que significa que hubo un período en el que algunos desarrolladores de Vue pueden haber tenido archivos .txt que aparecieron inesperadamente.
En otras palabras, no demasiada gente se hizo con la versión destructiva, ya que las grandes aplicaciones y frameworks habrán utilizado la rama estable, que durante un breve periodo de tiempo dejó de tener archivos .txt. Cualquiera que utilice versiones de vanguardia puede haber visto desaparecer sus archivos, o haber encontrado manifiestos guardados en sus ordenadores.
El equipo de infoseguridad Snyk ha documentado una línea de tiempo de los acontecimientos. Observamos que la página de aterrizaje del módulo node-ipc en NPM afirma que «a partir de la v11 este módulo utiliza el módulo peacenotwar».
Miller ha defendido su módulo peacenotwar en GitHub, diciendo que «todo esto es público, documentado, con licencia y de código abierto». Anteriormente, hubo más de 20 cuestiones marcadas contra node-ipc sobre su mal comportamiento, y ahora muchas más sobre peacenotwar.
Algunos de los comentarios se refieren a la creación de Miller como «protestware». Otros lo llaman «malware». El programador no estaba disponible para hacer comentarios.
Alguien incluso afirmó que una ONG estadounidense tenía sus archivos de producción en un sistema destrozado por node-ipc, ya que estaban ejecutando la biblioteca en un servidor de monitoreo en Bielorrusia con una dirección IP que activó el código de borrado de datos.
Vigilando, con un Vue to a Kill: Los desarrolladores de Wikimedia descartan a React para el cambio de imagen de JavaScript a pesar de las quejas
Cómo un desarrollador acaba de romper Node, Babel y miles de proyectos en 11 líneas de JavaScript Travis CI arregló silenciosamente un error que exponía claves secretas
¿Preocupado por los sustos ocasionales de malware en Npm? Es más común de lo que crees
Un desarrollador de JavaScript estropea deliberadamente sus propios paquetes npm populares para hacer un punto de vista de algún tipo
El continuo auge del framework JavaScript Node.js ha dado al mundo un nuevo tipo de vulnerabilidad de software.
El gestor de paquetes de Node es NPM, que hoy en día está supervisado y es propiedad de GitHub junto con el registro de módulos de NPM. Esta herramienta facilita que las aplicaciones de Node puedan extraer automáticamente otras bibliotecas de código directamente de los repositorios en línea. Esto da lugar a un gran número de descargas para muchos módulos, lo que significa que los pequeños cambios de código pueden propagarse muy rápidamente a través de un gran número de ordenadores.
La versión de node-ipc, que permitía descargar archivos, se coló en la versión 3.1 de Unity Hub, una herramienta para el popularísimo motor de juegos Unity, aunque fue eliminada el mismo día.
«Este hot-fix elimina un problema por el que una biblioteca de terceros era capaz de crear un archivo de texto vacío en el escritorio de las personas que utilizaban esta versión», escribió el equipo de Unity. «Aunque era una molestia, el problema no incluía una funcionalidad maliciosa. Cualquier usuario al que le haya aparecido este archivo en su escritorio después de actualizar el Hub de Unity puede eliminar este archivo.»
No es ni mucho menos la primera vez que ocurre algo así. En 2016, un desarrollador eliminó su pequeña biblioteca de leftpad de NPM, rompiendo miles de otras aplicaciones. A principios de este año, otro desarrollador añadió un cambio de ruptura a su biblioteca como protesta.
FUENTE