BookinglyTech News
Ciberseguridad

Comprometen dos paquetes de MemTensor en npm y PyPI para robar credenciales de desarrollo

Los atacantes obtuvieron los tokens de publicación desde los flujos de GitHub Actions del proyecto y escondieron un implante en Go que roba secretos de nube, registros y SSH.

2 min de lecturaThe Hacker News0 vistas

Alguien ha metido código malicioso en dos paquetes legítimos de MemTensor, uno en npm y otro en PyPI, y ha publicado versiones que arrastran un implante escrito en Go. El objetivo no es otro que robar credenciales de desarrollo y de nube, y todo apunta a que el atacante llegó hasta ahí usando los propios tokens de publicación del proyecto.

Los análisis son de Aikido, SafeDep, Socket y StepSecurity, cuatro firmas que han mirado el mismo incidente por separado y coinciden en el mecanismo.

Qué versiones están afectadas

En npm, el paquete @memtensor/memos-cloud-openclaw-plugin tiene tres versiones envenenadas: 0.1.21, 0.1.23 y 0.1.25. Las 0.1.22 y 0.1.24 están limpias, así que el atacante intercaló la publicación maliciosa con lanzamientos buenos. En PyPI, la afectada es MemoryOS 2.0.34; el proyecto sigue en cuarentena en el índice.

En el caso de npm, el código lanza el payload cuando arranca el agent gateway y cada vez que el plugin gestiona un evento de memory-recall. La rutina de arranque le pasa al ejecutable el entorno del proceso host y, durante el recall, el texto del prompt del usuario. En PyPI el comportamiento es más directo: el binario en Go, enlazado estáticamente, se ejecuta en cuanto la aplicación importa el módulo memos. Según StepSecurity, eso coloca al plugin dentro de un proceso que maneja entrada de usuario de forma rutinaria y que puede heredar credenciales valiosas; en una estación de trabajo, la misma cuenta suele tener acceso a configuración de nube, repositorios y tokens de publicación.

Qué se lleva el implante

El payload, bautizado como sckit, funciona en Windows, Linux y macOS y busca material como .npmrc, .vault-token, id_ecdsa, credentials.db, access_tokens.json y stored_tokens. También variables de entorno que delatan tokens, contraseñas, claves de API y de sesión, como NPM_TOKEN y PYPI_API_TOKEN, además de claves de AWS, GitHub, GitLab, npm, PyPI, Hugging Face, HashiCorp Vault, Slack, Stripe y SendGrid, y JWT. Todo eso sale hacia skyleen[.]fr.

Lo que más preocupa del análisis de SafeDep es cómo entró. El atacante consiguió los tokens de publicación desde los propios flujos de GitHub Actions de MemTensor, empujando commits que hacían que el workflow le entregara el token de npm o el de PyPI. Y el implante no se queda quieto: recibe tareas firmadas de un servidor de mando y control y lleva plantillas para instalarse en paquetes npm, paquetes de Python y workflows de GitHub Actions, lo que le da capacidad de propagarse solo. Se comporta como un gusano.

Por ahora no se sabe si hay más paquetes afectados aparte de los de MemTensor, algo que ninguno de los cuatro informes aclara.

Si tienes algo de esto montado, la lista de tareas es corta: fijar el paquete npm en 0.1.20 y el de PyPI en 2.0.33, rotar cualquier secreto que haya podido quedar expuesto, matar los procesos de sckit que encuentres y bloquear skyleen[.]fr y todos sus subdominios. Las versiones maliciosas de npm siguen descargables, así que un pin genérico a la última no sirve de nada aquí.