Durante seis meses, en npm hubo un paquete que fingía ser una librería para WhatsApp Web y, en realidad, robaba silenciosamente conversaciones, contactos y tokens de acceso.

En el repositorio npm se detectó un paquete malicioso, lotusbail, que se hace pasar por una biblioteca para trabajar con WhatsApp Web y al mismo tiempo roba discretamente las conversaciones y proporciona a los atacantes acceso persistente a la cuenta. Según datos Koi Security, el paquete se descargó más de 56 000 veces, se publicó hace aproximadamente medio año y a día de hoy sigue estando disponible para su instalación.
Por fuera todo parece casi perfecto: lotusbail realmente funciona como el API prometido. Está hecho como un fork de la popular y legítima biblioteca Baileys (@whiskeysockets/baileys), que se usa para integrar WhatsApp en servicios propios a través del protocolo WhatsApp Web. Precisamente esa «normal» funcionalidad adormece la vigilancia: el desarrollador añade la dependencia, comprueba — los mensajes se envían y se reciben —, por lo que puede «lanzarlo a producción».
A partir de ahí empieza lo que no debería estar en una biblioteca así. Según la descripción de Koi Security, el código malicioso envuelve el cliente WebSocket por el que la aplicación se comunica con WhatsApp y obtiene la capacidad de ver todo el tráfico. En el momento de la autorización intercepta los tokens y las claves de la sesión, luego copia los mensajes entrantes y salientes, vuelca la lista de contactos, así como los archivos multimedia y documentos —y prepara todo esto para enviarlo al servidor de los atacantes.
Para que el robo no llame la atención a nivel de red, los datos no salen «tal cual»: los investigadores señalan una implementación personalizada incorporada de RSA y una ofuscación multinivel, debido a las cuales la dirección del servidor y la propia transmisión parecen lo más opacas posible para una verificación superficial. Se mencionan por separado técnicas anti‑análisis —incluidas trampas que dificultan la depuración y el análisis dinámico del comportamiento del paquete.
Pero el aspecto más desagradable es la «cola» que puede quedar incluso después de eliminar la dependencia del proyecto. WhatsApp permite vincular nuevos dispositivos mediante códigos de emparejamiento, y, como describe Koi Security, lotusbail interviene en este proceso para, junto con su aplicación, vincular también el dispositivo del atacante. Como resultado, el atacante obtiene acceso permanente a las conversaciones y a los contactos, y la simple eliminación del paquete npm no resuelve el problema: el dispositivo vinculado seguirá apareciendo en la cuenta hasta que se desconecte manualmente en los ajustes de WhatsApp.
Si ya ha usado lotusbail o un fork sospechoso de Baileys en producción, es prudente asumir que la sesión pudo haber sido comprometida: conviene comprobar la lista de dispositivos vinculados en WhatsApp y desvincular todo lo innecesario, así como revisar la cadena de dependencias y las fuentes de los paquetes en la compilación. El caso de lotusbail ilustra bien cómo cambian los ataques a la cadena de suministro: los paquetes maliciosos con mayor frecuencia no rompen la funcionalidad, sino que, por el contrario, añaden discretamente un segundo escenario oculto.