Los ataques que aprovechan los paquetes maliciosos de código abierto se están convirtiendo en una amenaza importante y creciente. Este tipo de ataques actualmente parece común, con Informes de paquetes infectados en repositorios como Pypi o NPM que aparecen casi a diario. Parece que el mayor escrutinio de los investigadores en estos repositorios debería haber minimizado hace mucho tiempo las ganancias para los ciberdelincuentes que intentan hacer una fortuna de los paquetes maliciosos. Sin embargo, nuestra investigación sobre un reciente ciberincidente confirmó una vez más que los paquetes de código abierto siguen siendo una forma atractiva para que los atacantes ganen dinero fácil.
Infectado de la nada
En junio de 2025, un desarrollador de blockchain de Rusia nos contactó después de ser víctima de un ciberataque. Había tenido alrededor de $ 500,000 en activos de criptografía robados de él. Sorprendentemente, el sistema operativo de la víctima se había instalado solo unos días antes. Nada más que aplicaciones esenciales y populares se habían descargado a la máquina. El desarrollador era muy consciente de los riesgos de ciberseguridad asociados con las transacciones criptográficas, por lo que estaba atento y revisó cuidadosamente cada paso mientras trabajaba en línea. Además, utilizó servicios en línea gratuitos para la detección de malware para proteger su sistema, pero no hay software antivirus comercial.
Las circunstancias de la infección despertaron nuestro interés, y decidimos investigar los orígenes del incidente. Después de obtener una imagen de disco del sistema infectado, comenzamos nuestro análisis.
Destacando sintaxis con una captura
Como examinamos los archivos en el disco, se llamó un archivo extension.js llamó nuestra atención. Lo encontramos en %userProfile %\. Cursor \ Extensions \ SolidityAI.Solidity-1.0.9-Universal \ src \ extension.js. A continuación se muestra un fragmento de su contenido:
Una solicitud enviada por la extensión al servidor
Esta captura de pantalla muestra claramente el código solicitando y ejecutando un script de PowerShell desde el servidor web angelic(.)su: un signo seguro de malware.
Resultó que extension.js era un componente de la extensión del lenguaje de solidez para el cursor AI IDE, que se basa en el código de Visual Studio y está diseñado para el desarrollo asistido por AI-AI. La extensión está disponible en el registro Open VSX, utilizado por Cursor AI, y se publicó hace unos dos meses. En el momento en que esta investigación, la extensión se había descargado 54,000 veces. La cifra probablemente se infló. Según la descripción, la extensión ofrece numerosas características para optimizar el trabajo de contrato de trabajo con Solidity Smart, específicamente sintaxis destacando:
La descripción de la extensión en el registro Open VSX
Analizamos el código de cada versión de esta extensión y confirmamos que era falso: ni sintaxis destacado ni ninguna de las otras características reclamadas se implementaron en ninguna versión. La extensión no tiene nada que ver con los contratos inteligentes. Todo lo que hace es descargar y ejecutar código malicioso desde el servidor web mencionado anteriormente. Además, descubrimos que la descripción del complemento malicioso fue copiada por los atacantes de la Página de una extensión legítimaque tenía 61,000 descargas.
Cómo llegó la extensión en la computadora
Entonces, descubrimos que la extensión maliciosa tenía 54,000 descargas, mientras que la legítima tenía 61,000. Pero, ¿cómo lograron los atacantes arrullar la vigilancia del desarrollador? ¿Por qué descargaría una extensión maliciosa con menos descargas que el original?
Descubrimos que al intentar instalar un resaltador de sintaxis de código de solidez, el desarrollador buscó en el registro de extensión para solidity. Esta consulta devolvió lo siguiente:
Resultados de búsqueda de «solidez»: extensiones maliciosas (rojas) y legítimas (verdes)
En los resultados de la búsqueda, la extensión maliciosa apareció en cuarto lugar, mientras que la legítima estaba solo en el octavo lugar. Por lo tanto, al revisar los resultados de búsqueda, el desarrollador hizo clic en la primera extensión en la lista con un número significativo de descargas, que desafortunadamente demostró ser el malicioso.
La trampa del algoritmo de clasificación
¿Cómo apareció la extensión maliciosa en los resultados de búsqueda que la legítima, especialmente teniendo en cuenta que tenía menos descargas? Resulta que el registro Open VSX clasifica los resultados de búsqueda por relevancia, que considera múltiples factorescomo la calificación de extensión, cuán recientemente se publicó o actualizó, el número total de descargas y si se verifica la extensión. En consecuencia, la clasificación está determinada por una combinación de factores: por ejemplo, una extensión con un bajo número de descargas aún puede aparecer cerca de la parte superior de los resultados de búsqueda si esa métrica es compensada por su recencia. Esto es exactamente lo que sucedió con el complemento malicioso: la última fecha de actualización de la extensión falsa fue el 15 de junio de 2025, mientras que el legítimo se actualizó por última vez el 30 de mayo de 2025. Por lo tanto, debido a la combinación general de factores, la relevancia de la extensión maliciosa superó la del original, lo que permitió a los atacantes promover la extensión falsa en los resultados de búsqueda.
El desarrollador, que cayó en la trampa del algoritmo de clasificación, no obtuvo la funcionalidad que quería: la extensión no hizo ninguna sintaxis en la solidez. La víctima confundió esto con un error, que decidió investigar más tarde, y continuó su trabajo. Mientras tanto, la extensión instaló silenciosamente malware en su computadora.
Desde scripts de PowerShell hasta control remoto
Como se mencionó anteriormente, cuando se activó el complemento malicioso, descargó un script de PowerShell de https://angelic(.)su/files/1.txt.
El contenido del guión de PowerShell
El script verifica si el software de administración remota ScreenConnect está instalado en la computadora. Si no, descarga un segundo script de PowerShell malicioso de: https://angelic(.)su/files/2.txt. Este nuevo script luego descarga el instalador ScreenConnect a la computadora infectada desde https://lmfao(.)su/Bin/ScreenConnect.ClientSetup.msi?e=Access&y=Guest y lo ejecuta. A partir de ese momento, los atacantes pueden controlar la computadora infectada a través del software recién instalado, que está configurado para comunicarse con el servidor C2 relay.lmfao(.)su.
Robo de datos
El análisis posterior reveló que los atacantes usaron ScreenConnect para cargar tres VBScripts a la máquina comprometida:
Cada uno de estos descargó un script de PowerShell del servicio de intercambio de texto paste.ee. La URL de descarga fue ofuscada, como se muestra en la imagen a continuación:
La URL ofuscada para descargar el script de PowerShell
El script de PowerShell descargado recuperó una imagen de archive(.)org. Un cargador conocido como Vmdetector luego se extrajo de esta imagen. Ataques de vmdetector fueron observados previamente en campañas de phishing que se dirigieron a entidades en América Latina. El cargador descargó y ejecutó la carga útil final de Paste.ee.
Nuestro análisis de los VBScripts determinó que las siguientes cargas se descargaron a la computadora infectada:
Quasar Open-Source Backdoor (a través de a.vbs y b.vbs),
Stealer que recopiló datos de navegadores, clientes de correo electrónico y billeteras de cifrado (a través de m.vbs). Los productos de Kaspersky detectan este malware como HEUR:Trojan-PSW.MSIL.PureLogs.gen.
Ambos implantes se comunicaron con el servidor C2 144.172.112(.)84que resolvió relay.lmfao(.)su En el momento de nuestro análisis. Con estas herramientas, los atacantes obtuvieron con éxito las frases de contraseña para las billeteras del desarrollador y luego sífonaron la criptomoneda.
Nuevo paquete malicioso
El complemento malicioso no duró mucho en la tienda de extensión y fue retirado el 2 de julio de 2025. Para ese momento, ya lo había detenido no solo por nosotros mientras investigamos el incidente, sino también por otros investigadores. Sin embargo, los atacantes continuaron su campaña: solo un día después de la eliminación, publicaron otro paquete malicioso llamado «Solidity», esta vez replicando exactamente el nombre de la extensión legítima original. La funcionalidad del falso permaneció sin cambios: el complemento descargó un guión de PowerShell malicioso en el dispositivo de la víctima. Sin embargo, los atacantes buscaron inflar el número de descargas dramáticamente. La nueva extensión supuestamente se descargó alrededor de dos millones de veces. Los siguientes resultados aparecieron hasta hace poco cuando los usuarios buscaban solidity Dentro del entorno de desarrollo de AI cursor (el complemento se elimina actualmente gracias a nuestros esfuerzos).
Resultados de búsqueda actualizados para «solidez»
Los resultados de búsqueda actualizados mostraron las extensiones legítimas y maliciosas que aparecen uno al lado del otro en las clasificaciones de búsqueda, ocupando las posiciones séptimas y octavas respectivamente. Los nombres de los desarrolladores se ven idénticos a primera vista, pero el paquete legítimo fue subido por juanblancomientras que el malicioso fue subido por juanbIanco. La fuente utilizada por Cursor Ai hace la letra minúscula l y mayúsculas I parecer idéntico.
Por lo tanto, los resultados de búsqueda mostraron dos extensiones aparentemente idénticas: la legítima con 61,000 descargas y la maliciosa con dos millones de descargas. ¿Cuál elegiría instalar el usuario? Hacer la decisión correcta se convierte en un verdadero desafío.
Ataques cibernéticos similares
Vale la pena señalar que las extensiones de solidez que descubrimos no son los únicos paquetes maliciosos publicados por los atacantes detrás de esta operación. Usamos nuestro Herramienta de monitoreo de paquetes de código abierto Para encontrar un paquete NPM malicioso llamado «SolSafe». Utiliza la URL https://staketree(.)net/1.txt para descargar screenconnect. En esta campaña, también está configurado para usar relay.lmfao(.)su Para la comunicación con los atacantes.
También descubrimos que abril y mayo de 2025 vieron tres extensiones de código de estudio de estudio malicioso publicado: SOLAIBOT, ENTRA-ET y Blankebesxstnion. El método de infección utilizado en estas amenazas es sorprendentemente similar al que describimos anteriormente. De hecho, encontramos una funcionalidad casi idéntica en sus scripts maliciosos.
Scripts descargados por VS Code Extension (Left) vs. Solidity Language (derecha)
Además, todas las extensiones enumeradas realizan las mismas acciones maliciosas durante la ejecución, a saber:
Descargar los scripts de PowerShell nombrados 1.txt y 2.txt.
Use un VBScript con una URL ofuscada para descargar una carga útil de paste.ee.
Descargue una imagen con una carga útil de archive.org.
Esto nos lleva a concluir que estos esquemas de infección se están utilizando ampliamente para atacar a los desarrolladores de blockchain. Creemos que los atacantes no se detendrán con las extensiones de solidez o el paquete SolSafe que encontramos.
Comida para llevar
Los paquetes maliciosos continúan representando una amenaza significativa para la industria criptográfica. Muchos proyectos hoy dependen de herramientas de código abierto descargadas de repositorios de paquetes. Desafortunadamente, los paquetes de estos repositorios son a menudo una fuente de infecciones por malware. Por lo tanto, recomendamos una precaución extrema al descargar cualquier herramienta. Siempre verifique que el paquete que está descargando no es falso. Si un paquete no funciona como se anuncia después de instalarlo, sospeche y consulte el código fuente descargado.
En muchos casos, el malware instalado a través de paquetes falsos de código abierto es bien conocido y Soluciones modernas de ciberseguridad puede bloquearlo efectivamente. Incluso los desarrolladores experimentados no deben descuidar las soluciones de seguridad, ya que pueden ayudar a prevenir un ataque en caso de que se instale un paquete malicioso.
Indicadores de compromiso
Hashes de archivos JS maliciosos2C471E265409763024CDC3379C84D88D5AAF9AEA1911266B875D3B7604A0A0B404DD413F10CCFEEA23BFB00B0E403532FA8651BFB456D84B6A16953355A800A7030BF3D2AED946BBA51FC3EEDB2DAAA3E8044B60151F0B5C1550831FBC6DF1784D4A4C6D7E55E201B20327CA2068992180D9EC0C08A6827FAA4FF3534B96C3D6FEB5B35057DB235940B2C41DA9E3AE0553969F1C89A16E3F66BA6F6005C6FA8F4721F32B8D6B856364327C21EA3C703F1787CFB4C043F87435A8876D903B2C
Indicadores de redhttps: // angelic (.) SU/archivos/1.txthttps: // angelic (.) SU/archivos/2.txthttps: // staketree (.) net/1.txthttps: // staketree (.) net/2.txthttps: //relay.lmfao (.) Suhttps: // lmfao (.) su/bin/screenconnect.clientsetup.msi? e = access & y = invitado144.172.112 (.) 84