Ataque a la cadena de suministro de paquetes NPM de React-Native ~ Segu-Info

Un importante ataque a la cadena de suministro afectó a NPM (Javascript)
después de que 17 paquetes populares de Gluestack ‘@react-native-aria’,
con más de un millón de descargas
, se vieran comprometidos e incluyeran
código malicioso que actúa como un troyano de acceso remoto (RAT).

BleepingComputer determinó
que la vulneración comenzó el 6 de junio a las 16:33 EST, cuando se publicó
una nueva versión del paquete @react-native-aria/focus en NPM. Desde
entonces, 17 de los 20 paquetes de Gluestack @react-native-aria se han
visto comprometidos en NPM, y los actores de amenazas publicaron una nueva
versión hace apenas dos horas.

El ataque a la cadena de suministro
fue descubierto por la empresa de ciberseguridad Aikido Security, que descubrió código ofuscado inyectado en el archivo
lib/index.js para los siguientes paquetes:

Package Name Version Weekly Downloads
@react-native-aria/button 0.2.11 51,000
@react-native-aria/checkbox 0.2.11 81,000
@react-native-aria/combobox 0.2.10 51,000
@react-native-aria/disclosure 0.2.9 3
@react-native-aria/focus 0.2.10 100,000
@react-native-aria/interactions 0.2.17 125,000
@react-native-aria/listbox 0.2.10 51,000
@react-native-aria/menu 0.2.16 22,000
@react-native-aria/overlays 0.3.16 96,000
@react-native-aria/radio 0.2.14 78,000
@react-native-aria/switch 0.2.5 477
@react-native-aria/toggle 0.2.12 81,000
@react-native-aria/utils 0.2.13 120,000
@gluestack-ui/utils 0.1.17 55,000
@react-native-aria/separator 0.2.7 65
@react-native-aria/slider 0.2.13 51,000
@react-native-aria/tabs 0.2.14 70,000

Estos paquetes son muy populares, con aproximadamente 1.020.000 descargas
semanales, lo que los convierte en un ataque masivo a la cadena de
suministro con consecuencias generalizadas.

La misma firma Aikido Security descubrió ya en el mes de mayo el compromiso de
un paquete NPM llamado «rand-user-agent». El paquete fue infectado
con rutinas de descargas de un RAT y los investigadores confirmaron que todo
aquel que utilizara el paquete sería infectado por transición.  

El código malicioso está altamente ofuscado y se adjunta a la última línea del
código fuente del archivo, con muchos espacios, por lo que no es fácil de
detectar al usar el visor de código del sitio web de NPM.

Aikido informó que el código malicioso es casi idéntico a un troyano de acceso
remoto presente en otra vulnerabilidad de NPM que descubrieron el mes pasado.
El análisis del investigador de la campaña anterior explica que el troyano de
acceso remoto se conectará al servidor de comando y control de los atacantes y
recibirá comandos para ejecutar.

Estos comandos incluyen:

  • cd – Change current working directory
  • ss_dir – Reset directory to script’s path
  • ss_fcd:<path> – Force change directory to <path>
  • ss_upf:f,d – Upload single file f to destination d
  • ss_upd:d,dest – Upload all files under directory d to destination dest
  • ss_stop – Sets a stop flag to interrupt current upload process
  • Any other input – Treated as a shell command, executed via
    child_process.exec()

El troyano también secuestra la ruta PATH de Windows anteponiendo una ruta
falsa de Python (%LOCALAPPDATA%\Programs\Python\Python3127) a la
variable de entorno PATH, lo que permite al malware anular silenciosamente
comandos legítimos de Python o PIP para ejecutar binarios maliciosos.

El investigador de seguridad de Aikido, Charlie Eriksen, ha intentado
contactar con Gluestack para informarle sobre la vulnerabilidad
creando issues de GitHub
en cada uno de los repositorios del proyecto. El creador de las librerías,
la firma GlueStack, ha marcado como obsoletos los paquetes para evitar el
indeseado efecto de eliminar una dependencia y romper los miles de proyectos
que hacen uso de ellas. Una maniobra paradójica, en la que se necesita un
paquete, pero este está infectado, y se marca como obsoleto para llamar la
atención y hacer que el administrador lo actualice.

GlueStack ha revocado un token de acceso utilizado para publicar los paquetes comprometidos, que ahora están
marcados como obsoletos en NPM. «Desafortunadamente, no fue posible anular la publicación de la versión
comprometida debido a los paquetes dependientes»
publicó un desarrollador de GlueStack en GitHub«Como medida de mitigación, desactivé las versiones afectadas y
actualicé a la etiqueta más reciente para que apunte a una versión
anterior y segura»
.

Aikido también atribuye este ataque a los mismos actores de amenazas que
comprometieron otros cuatro paquetes de NPM a principios de esta semana:
biatec-avm-gas-station, cputil-node, lfwfinance/sdk y
lfwfinance/sdk-dev
.

Actualización: Tras publicar esta noticia, se descubrió que otro
paquete de NPM de GlueStack, @react-native-aria/tabs, estaba
comprometido, lo que elevó el total de descargas semanales a más de un
millón.

Fuente:
BC


Ver fuente

Related Post