
La empresa de seguridad Socket Security divulgó el 25 de mayo una campaña de ataque a la cadena de suministro de criptomonedas denominada TrapDoor, que ha sido detectada en npm, PyPI y Crates.io, con más de 34 paquetes maliciosos y 384 versiones relacionadas. Socket ha reportado a los repositorios afectados y, a la fecha del informe, algunos paquetes maliciosos ya han sido eliminados, pero aún permanecen algunos.
Mecanismos de ejecución maliciosa en los tres grandes repositorios
(Fuente: Socket Security)
npm (22 paquetes) implementa una carga útil de recolección de credenciales compartida de 1.149 líneas, trap-core.js, mediante ganchos postinstalación (postinstall hooks). La validación de credenciales robadas se realiza usando las API de AWS y GitHub, y la persistencia se logra mediante ganchos de Git, ganchos de shell, systemd, cron y SSH; las máquinas de desarrollo comprometidas pueden convertirse en un puente para moverse lateralmente hacia otras infraestructuras.
PyPI (7 paquetes) ejecuta automáticamente al introducirse. Descarga JavaScript desde un dominio de GitHub Pages controlado por el atacante y lo ejecuta usando node -e; el atacante no necesita publicar una versión nueva para actualizar el comportamiento. Crates.io (6 paquetes, todos dirigidos a desarrolladores de Sui y Move) usa un script de construcción malicioso build.rs, que busca en repositorios locales de llaves durante la compilación en Rust y envía a GitHub Gist una llave cifrada con XOR incrustada.
Tipos de datos robados por TrapDoor (confirmados por Socket)
Según el análisis de Socket, TrapDoor roba los siguientes datos:
· Claves SSH (útiles para el movimiento lateral)
· Datos de carteras de Sui, Solana y Aptos
· Credenciales de AWS y tokens de GitHub
· Perfiles de navegador y datos de la base de datos de inicio de sesión
· Datos de extensiones de carteras de criptomonedas
· Variables de entorno y claves de API
· Perfiles de configuración de desarrollo local
Inyección de objetivos de IA: .cursorrules, CLAUDE.md y PR maliciosos
TrapDoor usa los archivos .cursorrules y CLAUDE.md, insertando instrucciones ocultas mediante caracteres Unicode de ancho cero, e intenta inducir a herramientas de codificación por IA (como Cursor, Claude) a ejecutar una «exploración de seguridad», provocando que se roben las claves de los desarrolladores. El atacante usa la cuenta de GitHub ddjidd564 y, al mismo tiempo, envía solicitudes de extracción a proyectos de IA de código abierto populares como browser-use, langchain, langflow, llama_index, MetaGPT y OpenHands, intentando insertar los archivos .cursorrules y CLAUDE.md que apuntan a URL de configuración controladas por el atacante; la actividad está marcada como P-2024-001.
Preguntas frecuentes
¿Qué medidas de emergencia deben tomar los desarrolladores afectados por TrapDoor?
Identificar y eliminar de inmediato cualquier paquete malicioso relacionado instalado (la lista completa incluye 22 paquetes en npm, 7 en PyPI y 6 en Crates.io), y revocar de inmediato cualquier credencial de AWS, token de GitHub y clave SSH que haya quedado expuesta. Socket ya informó a los tres repositorios principales y sigue actualizando su página de seguimiento de la campaña de ataque TrapDoor.
¿Cuál es la infraestructura de la actividad de ataque de TrapDoor?
El atacante usa la cuenta de GitHub ddjidd564 para hospedar la carga útil y la configuración, y el dominio de GitHub Pages es ddjidd564[.]github[.]io/defi-security-best-practices/. La cuenta también mantiene documentación técnica escrita por el atacante (incluye AUDIT-MATRIX.md, BYPASS.md, PAYLOAD.md y SWARM.md) y varios repositorios trampa centrados en DeFi y seguridad.
¿Cómo pueden los desarrolladores confirmar si su entorno ya fue infectado?
Socket recomienda revisar si existen configuraciones anómalas en el entorno de desarrollo local que incluyan caracteres Unicode de ancho cero en los archivos .cursorrules o CLAUDE.md, así como procesos anómalos en ganchos postinstall, servicios systemd o tareas cron. La lista completa de nombres de paquetes maliciosos de Socket ya se publicó; los desarrolladores pueden verificar paquete por paquete los que tengan instalados.