Introducción
Un botnet escrito en Go llamado NadMesh apareció a principios de julio centrado en servicios de IA expuestos. Según el panel de control del operador, afirma haber obtenido 3.811 claves AWS únicas. Un recolector basado en Shodan mantiene la cola de escaneo con destinos como ComfyUI, Ollama, n8n, Open WebUI, Langflow y Gradio: generadores de imágenes, ejecutores de modelos locales y constructores de flujos de trabajo que los equipos despliegan rápidamente pero protegen con cortafuegos tarde.
La fuente de inteligencia detrás de ese contador muestra 47 capturas de credenciales y 41 inventarios de modelos en sus últimos 100 registros. Esos inventarios contienen identificadores de DeepSeek, GLM y Kimi etiquetados como ':cloud', lo que sugiere que lo que los bots catalogan va más allá de la máquina en sí.
QiAnXin XLab publicó un informe el viernes, bautizó el malware por la cadena 'n4d mesh controller' en su código fuente y mostró una captura del panel. Las cifras en el panel son del propio operador, capturadas el 10 de julio, y no coinciden entre sí. Un contador de 17.700 despliegues totales aparece sobre un embudo que afirma 95.700 en las últimas 24 horas. Un mosaico indica 16 bots activos; el siguiente dice 12. El número de credenciales es al menos el que se indica dos veces. Los propios sensores de XLab ofrecen una medida externa: las IPs fuente distintas que ejecutaban NadMesh rondaban cerca de cero a finales de junio, luego se dispararon en la primera semana de julio hasta unas 139 al día.
Lo que un bot envía al servidor son claves cloud extraídas de variables de entorno, tokens de cuenta de servicio de Kubernetes y el contenido de archivos como ~/.aws/config, .env y ~/.docker/config.json. Los investigadores lo expresan claramente: el operador busca 'no el host en sí, sino las credenciales cloud, los privilegios del clúster de Kubernetes' que contiene. El acceso a modelos y herramientas MCP invocables completa la lista.
Prioridad en MCP y vectores de explotación
MCP encabeza el orden de prioridad del controlador para la explotación, por encima de Kubernetes, Docker API y Redis. El vector que XLab registra junto a él es JSON-RPC tools/call a execute_command. No se adjunta ningún CVE a esa línea, y el informe no reclama ninguno. La primera especificación de MCP dejaba la autenticación fuera del protocolo central, y el flujo de autorización añadido en marzo de 2025 sigue siendo opcional según el propio texto de la especificación. Muchos despliegues lo omiten. Censys contó 12.520 servicios MCP accesibles en 8.758 direcciones IP hasta el 28 de abril, más de 21.000 para el 6 de mayo, y aproximadamente 90 anunciaban una herramienta que ejecuta comandos. En 39 de ellos, la herramienta se llamaba execute_command, exactamente la llamada que encabeza la tabla de NadMesh.
Los propios contadores MCP del botnet no cuadran: 12.100 servicios MCP listados como explotables, 21 vulnerabilidades MCP en total, y ninguna entre los 100 registros de inteligencia en pantalla. Además, XLab observó el tráfico de explotación real: docker_containers_api_rce representa el 30,31%, jenkins_scripttext_rce otro 22,28%. Las contraseñas débiles de Telnet suponen el 10,36%, Redis el 8,29%. mcp_cmd_execute aparece en el gráfico, por lo que el vector está en el tráfico observado por XLab, pero se sitúa en la cola sin etiquetar por debajo de la porción más pequeña que alguien se molestó en etiquetar, con un 0,78%. Las etiquetas del gráfico no coinciden con las cadenas de estado del controlador, por lo que es la visión de los sensores de XLab sobre los intentos, no el registro de éxitos del operador.
Por tanto, el enfoque en IA es real en la entrada y en el botín, pero la mayor parte del tráfico de explotación sigue yendo a sockets Docker y consolas Jenkins.
Autoalimentación del escaneo y persistencia
El escaneo se retroalimenta: las subredes que producen aciertos se remuestrean más densamente cada cinco minutos; las IPs marcadas como peligrosas en las últimas 24 horas se revisan cada quince minutos con reescaneos /32 priorizando los puertos de IA; un barrido completo arrastra todo lo marcado como peligroso en los últimos siete días al principio. Cualquier objetivo que absorba diez intentos de despliegue sin devolver ningún resultado se añade automáticamente a una lista negra como posible honeypot. XLab interpreta esto como una señal de que el autor sabe que los investigadores están vigilando. Si la cola se vacía, los bots generan un /24 aleatorio y continúan.
Cinco versiones de compilación se ejecutan simultáneamente, once bots en la versión 33.8-GO-TITAN, y los rezagados en la 30.0. Un endpoint 'canary' prueba nuevas compilaciones en una parte de la flota: 5.448 respuestas servidas y 84.024 nulas. Un embudo rastrea las tareas desde los despliegues hasta los hosts activos. La nota al pie del panel es reveladora: el éxito se puntúa según una lista blanca de resultados que excluye explícitamente la recolección de Ollama y AWS. El marcador del operador no cuenta lo que el operador está robando.
La eliminación está diseñada para fallar. El agente persiste de tres formas simultáneas, por lo que eliminar una deja que las otras lo restauren. Cada compilación pasa por ofuscación Garble, empaquetado UPX -9 y relleno aleatorio, lo que significa que no hay dos agentes con el mismo hash. El hash de muestra publicado capturará esa compilación y perderá el resto.
Recomendaciones para protegerse
La mayoría de los ataques de NadMesh se dirigen a servicios expuestos y funcionalidades de administración accesibles: una API Docker abierta en el puerto 2375, una consola de scripts de Jenkins, Redis sin autenticación, Telnet débil y contraseñas SSH. Ningún parche cierra esas brechas. Es necesario protegerlos con autenticación o sacarlos de internet pública, empezando por los cuatro puertos que el trabajo de reescaneo prioriza: 8188 (ComfyUI), 11434 (Ollama), 7860 (Gradio) y 5678 (n8n).
También hay una cola de parches, y no todos son antiguos. El gráfico incluye CVE-2026-39987, una RCE sin autenticación en notebooks Marimo anteriores a 0.23.0. CISA lo incluyó en su lista KEV en abril tras ser explotado horas después de su divulgación. Junto a él está CVE-2026-41176, que permite a un atacante sin autenticación activar rc.NoAuth en servidores rclone RC desde la versión 1.45.0 hasta la 1.73.5 que se iniciaron sin autenticación HTTP. Las configuraciones de rclone son credenciales cloud. Las entradas más antiguas requieren verificar sus condiciones antes de alarmarse: CVE-2022-22947 (6,48%) solo afecta si el endpoint Actuator de Spring Cloud Gateway está habilitado y expuesto sin seguridad, y CVE-2017-12611 (4,15%) es la vulnerabilidad de la etiqueta Freemarker de Struts.
Además, hay que revisar las rutas de instalación: ~/.ssh/authorized_keys en busca de claves que nadie recuerde haber añadido, /dev/shm/.a, /var/tmp/.a, /tmp/.a, y /etc/cron.d/.sys_monitor, /etc/cron.d/.s. Si aparece algo de esto, aislar el host y revocar inmediatamente todas las credenciales que haya podido ver: claves AWS, tokens de clúster, contenidos de .env, credenciales de registro. Revocar no es rotar. Extraer la persistencia antes de emitir reemplazos, o las nuevas claves seguirán el mismo camino que las antiguas.
Luego revisar dónde se usaron las credenciales antiguas mientras estaban activas. Los indicadores de XLab son un C2 en 209.99.186[.]235, el dominio cdnorigin[.]net y una muestra de agente con SHA1 31c69b3e12936abca770d430066f379ec1d997ec.
The Hacker News cubrió otro operador trabajando con la misma clase de objetivo en abril: Censys descubrió que explotaba ComfyUI expuesto para minar GPU, Monero y Conflux, además de un nodo proxy Hysteria para reventa. Tres meses después, NadMesh barre una red mucho más amplia, pero ComfyUI expuesto y Docker en el puerto 2375 aparecen en ambas listas de objetivos. Lo que ha cambiado es la recompensa: el operador de abril quería la GPU, y NadMesh quiere a lo que el equipo puede acceder. Censys terminó su censo de MCP con una suposición sobre el resultado menos malo para todas esas herramientas shell expuestas: el host terminaría siendo 'parte de algún botnet futuro o infraestructura de abuso'. Era el 27 de mayo. XLab publicó un botnet con mcp_cmd_execute en su gráfico de explotación siete semanas después.





















Deja una respuesta