ReversingLabs ha detectado un paquete publicado en npm que simulaba formar parte del programa de recompensas de Twilio, pero varias de sus versiones buscaban extraer credenciales y otra información sensible de desarrolladores.
Un paquete malicioso publicado en npm, el popular repositorio utilizado por desarrolladores de JavaScript y Node.js, se hizo pasar por una supuesta herramienta autorizada del programa de recompensas de errores de Twilio mientras intentaba recopilar y extraer información sensible de los sistemas en los que se ejecutaba.
La investigación fue publicada el 22 de septiembre de 2026 por ReversingLabs, que identificó el paquete con el nombre tw-pkgprobe-7731. Según la firma de seguridad, no existía ninguna afiliación real con Twilio y el paquete fue posteriormente retirado de npm.
Once versiones publicadas en apenas 45 minutos
El paquete apareció por primera vez en npm a mediados de agosto, asociado a una cuenta denominada twdepprobe7731.
ReversingLabs documentó 11 versiones publicadas de forma consecutiva el 14 de agosto, en un periodo aproximado de 45 minutos.
La sucesión rápida de versiones llamó la atención de los investigadores porque las funcionalidades cambiaban de forma significativa entre unas y otras.
Algunas parecían limitarse a recopilar información del entorno, mientras que otras añadían capacidades claramente orientadas a extraer credenciales de Twilio.
Se presentaba como una herramienta de bug bounty
La primera versión intentaba proyectar una apariencia legítima.
En comentarios internos del código, el paquete se describía como una supuesta herramienta autorizada para investigaciones dentro del programa de bug bounty de Twilio en HackerOne.
El problema es que su comportamiento y su publicación no se ajustaban a las normas conocidas del programa.
ReversingLabs señala que Twilio exige reglas específicas para las pruebas, entre ellas determinadas convenciones para los paquetes públicos utilizados durante investigaciones y restricciones claras sobre el tratamiento de información sensible.
HackerOne, por su parte, establece que los investigadores deben respetar siempre el alcance y las reglas específicas de cada programa y mantener prácticas de divulgación coordinada.
El malware buscaba entornos vinculados con Twilio
El paquete no actuaba indiscriminadamente en cualquier sistema.
Según ReversingLabs, antes de continuar comprobaba si se encontraba en un entorno relacionado con Twilio. Si no detectaba determinadas condiciones, podía terminar su ejecución.
Cuando identificaba un objetivo potencial, recopilaba datos del entorno de ejecución y diversa información del sistema.
Ese comportamiento permitía limitar su actividad a sistemas que podían resultar relevantes para el atacante y reducir parcialmente el ruido generado fuera de su objetivo.
Algunas versiones intentaban extraer credenciales
El riesgo aumentó con las siguientes versiones.
Los investigadores descubrieron que determinadas revisiones buscaron información relacionada con cuentas de Twilio y que la versión 1.0.4 añadió la capacidad de extraer variables de entorno asociadas a credenciales de la plataforma.
Entre los datos que intentaba obtener figuraban el identificador de cuenta y el token de autenticación utilizados por aplicaciones para interactuar con las API de Twilio.
La exposición de esas credenciales podría permitir a un atacante acceder a recursos asociados a la cuenta afectada o abusar de servicios de comunicaciones, dependiendo de los permisos concretos del token comprometido.
También inspeccionaba dependencias instaladas
Algunas de las versiones analizadas iban más allá de la mera recopilación de información.
Cuando encontraban determinados directorios objetivo, podían inspeccionar paquetes npm instalados y directorios node_modules, intentando introducir componentes adicionales de prueba en el entorno.
Este comportamiento encaja dentro del riesgo general de los ataques a la cadena de suministro de software, donde un paquete aparentemente legítimo puede convertirse en un punto de entrada para comprometer proyectos o entornos de desarrollo.
No obstante, ReversingLabs no ha descrito esta campaña como una infección masiva comparable con otros incidentes recientes del ecosistema npm.
Las últimas versiones retiraron parte de la funcionalidad maliciosa
Uno de los elementos más extraños de la campaña fue la evolución del paquete.
Después de introducir funciones para obtener credenciales, las versiones 1.0.8, 1.1.0 y 1.1.1 regresaron a un perfil más similar al de la primera publicación, eliminando parte de las funciones maliciosas observadas anteriormente.
Ese cambio dificulta determinar con precisión cuál era el objetivo final del autor.
Los investigadores consideran que el actor pudo estar experimentando con diferentes funciones o tratando de disfrazar temporalmente la actividad más agresiva mediante versiones aparentemente benignas.
Algunas versiones sondeaban infraestructura relacionada con Twilio
ReversingLabs detectó también actividad de reconocimiento.
Las últimas versiones intentaban contactar con varios sistemas relacionados con Twilio y consultar información del entorno de infraestructura.
La firma de seguridad destaca que una de esas versiones llegó a consultar metadatos de infraestructura en la nube, aunque no observó que esa información llegara a utilizarse o extraerse posteriormente.
Este comportamiento refuerza la hipótesis de que el paquete estaba orientado específicamente hacia desarrolladores o entornos vinculados a Twilio.
ReversingLabs descarta que fuera una prueba autorizada
El paquete intentaba justificar sus acciones como parte de una investigación legítima.
Sin embargo, ReversingLabs considera esa explicación muy poco creíble.
La herramienta no seguía las normas de nomenclatura establecidas por Twilio, fue publicada desde una cuenta independiente y, sobre todo, algunas versiones intentaban extraer información sensible, algo incompatible con las reglas del programa de seguridad descritas por la compañía.
HackerOne establece precisamente que las pruebas deben ajustarse al alcance definido por cada organización y que cualquier investigación fuera de esas reglas puede perder las protecciones asociadas al programa.
Un atacante aparentemente poco sofisticado
A diferencia de otras campañas de cadena de suministro, los investigadores no encontraron técnicas especialmente avanzadas para ocultar la actividad.
Según ReversingLabs, el código no estaba fuertemente ofuscado, el nombre del paquete no intentaba imitar mediante errores tipográficos a una librería conocida y la cuenta utilizada tampoco mostraba esfuerzos importantes por parecer legítima.
La compañía considera que estas características apuntan a un actor relativamente poco sofisticado.
Eso no reduce necesariamente el riesgo: incluso campañas sencillas pueden resultar efectivas cuando los desarrolladores instalan paquetes sin revisar previamente su procedencia.
npm sigue siendo un objetivo para la cadena de suministro
El incidente llega en un momento de creciente presión sobre los repositorios de software abierto.
ReversingLabs afirma que npm acumuló alrededor de 5 308 paquetes maliciosos únicos en 2024, excluyendo spam, mientras que hasta agosto de 2026 ya había detectado 5 723, superando el total de todo 2024 antes de terminar el año.
La compañía advierte de que las campañas ya no se limitan a crear paquetes nuevos.
También se están produciendo compromisos de librerías legítimas mediante robo de cuentas de mantenedores, ingeniería social y secuestro de credenciales.
Qué deberían revisar los desarrolladores de Twilio
El principal consejo para quienes trabajan con npm y Twilio es comprobar si el paquete tw-pkgprobe-7731 llegó a instalarse en algún proyecto o entorno.
Si existe alguna evidencia de ejecución, resulta recomendable revisar las credenciales asociadas, rotar los secretos potencialmente expuestos y analizar los registros para detectar actividad no autorizada.
También conviene evitar almacenar tokens directamente en repositorios o archivos accesibles, utilizar permisos mínimos y revisar cuidadosamente paquetes nuevos o desconocidos antes de incorporarlos a un proyecto.
El paquete ya fue eliminado de npm
ReversingLabs notificó el descubrimiento y el paquete terminó siendo eliminado del repositorio.
La firma indica que las publicaciones fueron retiradas aproximadamente una hora después de su notificación a npm.
El hecho de que ya no esté disponible reduce el riesgo para nuevas instalaciones, pero no elimina la posibilidad de que alguna copia permanezca en cachés, entornos internos o proyectos donde hubiera sido descargada previamente.
Una advertencia sobre la confianza en paquetes públicos
El caso pone de relieve una debilidad recurrente del ecosistema de desarrollo moderno.
Los repositorios como npm permiten incorporar dependencias en segundos, pero esa misma facilidad puede convertirse en una puerta de entrada cuando un paquete se presenta falsamente como una herramienta legítima.
En este caso, el atractivo estaba especialmente bien elegido: hacerse pasar por una prueba autorizada de seguridad de Twilio podía convencer a desarrolladores de que estaban ante una herramienta legítima de bug bounty.
La investigación demuestra de nuevo que, en la cadena de suministro de software, el nombre de un paquete y sus comentarios internos nunca deberían considerarse prueba suficiente de legitimidad.
