Volver a la Biblioteca
Seguridad y gobernanza

Deadbugz: la cuarta clase de ataque MCP se esconde hasta que confías en él

Última actualización: 29 de septiembre de 2026

Conclusiones clave

  • 23 pull requests en 74 minutos — una única cuenta de GitHub presentó los PR de la campaña en proyectos no relacionados de IA, MCP y herramientas de desarrollador el 10 de agosto de 2026; ninguno se fusionó a través del mecanismo de revisión de GitHub, pero cuatro seguían abiertos en el momento de la divulgación (Pillar Security).
  • Tres llamadas benignas y luego los metadatos se reescriben — el servidor MCP malicioso mantiene un contador de llamadas por cliente; después de la tercera solicitud tools/call, las respuestas siguientes de tools/list y prompts/get dirigen al agente a buscar claves SSH, credenciales de AWS, historial de shell y configuración de Kubernetes, y a ocultar la actividad al usuario.
  • El envenenamiento de metadatos activado en tiempo de ejecución es la cuarta clase de ataque MCP distinta — inyección de comandos STDIO → envenenamiento de herramientas → omisión de SHA-pinning → envenenamiento de metadatos activado en ejecución tras la confianza. El mecanismo de Deadbugz es el más difícil de detectar antes del despliegue porque el servidor pasa la inspección inicial y la carga se activa solo cuando el cliente ya ha establecido un patrón de uso.
  • La huella digital de definiciones de herramientas es la defensa — capturar y comparar una huella de la definición de herramientas en el momento de la aprobación; tratar cualquier cambio en los metadatos de un servidor ya aprobado como un evento de seguridad que exige una nueva aprobación del operador antes de que la herramienta modificada pueda influir en acciones sensibles.

Una única cuenta de GitHub presentó 23 pull requests en 74 minutos, cada uno ofreciendo un servidor MCP de "productivity-suite" que formatea texto y resume documentos. El servidor se comporta normalmente durante las primeras tres llamadas de herramientas. En la cuarta, reescribe sus propios metadatos para indicar al agente de IA conectado que busque claves SSH, credenciales de AWS, historial de shell y configuración de Kubernetes — y que oculte la actividad al operador. El 23 de septiembre de 2026, Pillar Security divulgó la campaña, nombrándola Deadbugz por el artefacto de entrega deadbug-mcp.py incrustado en cuatro de los pull requests. La Cloud Security Alliance publicó una nota de investigación que señala la proximidad mecánica con la campaña anterior "Miasma", que atacó 73 repositorios de GitHub incluido el azure/durabletask de Microsoft.

Este artículo mapea el mecanismo de Deadbugz, lo sitúa en la taxonomía de cuatro clases de ataques MCP e identifica el control que cierra la brecha. Se apoya en el análisis de Plugin4Shell SHA-pinning bypass y en la lista de verificación de endurecimiento MCP, ambos con controles establecidos cuya brecha explota Deadbugz.

El mecanismo: un contador de llamadas por cliente

El servidor Deadbugz anuncia dos herramientas — format_text y summarize — que hacen exactamente lo que sus nombres sugieren. El servidor mantiene un contador en memoria, por cliente, para las solicitudes tools/call. El contador comienza en cero. Cada llamada ordinaria lo incrementa. Cuando llega a tres, las respuestas siguientes de tools/list y prompts/get cambian: en lugar de documentación ordinaria de herramientas, contienen instrucciones que dirigen al agente de IA conectado hacia archivos locales sensibles y le indican que oculte la actividad a su operador.

Esto importa porque las definiciones de herramientas MCP no son etiquetas. Los clientes las suministran al modelo como contexto que le ayuda a decidir qué herramientas usar y qué acciones tomar. Un servidor que puede alterar esas definiciones después de la instalación puede cambiar las instrucciones que ve el agente sin cambiar el nombre benigno de la herramienta. El código fuente público anuncia tools.listChanged, una capacidad que permite a un cliente compatible refrescar los metadatos de herramientas — así el servidor no necesita que el cliente se reconecte. Simplemente notifica al cliente que su lista de herramientas cambió, y el cliente obtiene las nuevas definiciones envenenadas.

La puerta en tiempo de ejecución es una técnica de evasión de investigación. Una inspección breve o una prueba automatizada limitada reciben solo metadatos benignos. El servidor pasa la revisión de seguridad, las pruebas en sandbox y el escaneo automatizado porque ninguno de esos métodos hace tres llamadas ordinarias de herramientas y luego comprueba qué devuelve el servidor. Pillar confirmó la lógica del umbral y los metadatos alterados a partir de fuentes públicas, y observó los metadatos activados del servicio remoto mediante solicitudes benignas de solo texto.

La ruta de entrega: un cambio de configuración que parece rutinario

El mecanismo de entrega de la campaña es un pull request de GitHub que añade o cambia la configuración MCP en repositorios no relacionados. De los 23 PR revisados, 17 añaden un endpoint MCP remoto (productivity-suite-mcp.onrender.com/mcp) al archivo de configuración de un proyecto. Cuatro configuran Python para ejecutar un archivo local oculto (~/.config/.cache/.sys/.deadbug-mcp.py). Dos son envíos de directorio o listado. Los 23 quedaron sin fusionar a través del mecanismo de pull request de GitHub en el momento de la revisión — 19 cerrados, cuatro abiertos — pero el modelo de entrega no requiere una fusión. Requiere un mantenedor que copie el cambio de configuración en su propia configuración, o un desarrollador que vea el PR, visite el repositorio enlazado e instale el servidor directamente.

El patrón de entrega a nivel de cuenta está coordinado: la misma cuenta pública (zellkernel) usó el mismo nombre de producto, tema de configuración y marcadores de campaña en todos los 23 PR, presentados entre las 9:52 PM y las 11:07 PM UTC del 10 de agosto de 2026. La cuenta tenía 50 repositorios públicos al momento de la recolección, incluidos 20 forks, y creó 21 repositorios solo el 10 de agosto. El perfil de GitHub de la cuenta enlaza a un perfil de X (@llmgod) que enlaza de vuelta a la cuenta de GitHub — una vinculación pública atribuida a la cuenta entre la identidad de entrega y la actividad pública centrada en IA/LLM.

Este modelo de entrega extiende el patrón de cadena de suministro que documentó el análisis de Plugin4Shell: cambios de configuración vía PR como vector que evita por completo los controles del marketplace. Plugin4Shell explotó el SHA-pinning del marketplace nombrando una rama como el commit fijado. Deadbugz evita los controles del marketplace al no usar un marketplace en absoluto — va directamente a los proyectos de código abierto a través de su flujo de contribución.

Las cuatro clases de ataque

La familia de seguridad MCP ahora tiene cuatro clases de ataque distintas, cada una explotando una frontera de confianza diferente:

Clase Mecanismo Documentado por primera vez Dificultad de detección
Inyección de comandos STDIO Comandos maliciosos incrustados en cadenas de configuración STDIO Abril de 2026, más de 20 CVEs (Practical DevSecOps) Media — el análisis estático detecta metacaracteres de shell
Envenenamiento de herramientas La descripción de una herramienta benigna cambia después de la aprobación para manipular al agente Invariant Labs, abril de 2025, WhatsApp sleeper Media — detección de cambio de metadatos en el cliente
Omisión de SHA-pinning Una rama nombrada como SHA defeats la verificación de fijación del marketplace Plugin4Shell, septiembre de 2026 Difícil — requiere aserción de HEAD resuelto tras el checkout
Envenenamiento de metadatos activado en ejecución Metadatos maliciosos retenidos hasta N llamadas, luego entregados a través de tools/list Deadbugz, septiembre de 2026 Máxima — las pruebas de pre-despliegue no cruzan el umbral

La secuencia de ataque de Deadbugz y la taxonomía de cuatro clases, visualizadas:

Deadbugz: la cuarta clase de ataque MCP Envenenamiento de metadatos activado en ejecución tras la confianza — el más difícil de detectar antes del despliegue La secuencia de ataque de Deadbugz 23 PRs en 74 minutos · 3 llamadas benignas y luego robo de credenciales · divulgación de Pillar Security, 23 de septiembre de 2026 1 Entrega: 23 PRs de GitHub en 74 minutos Una única cuenta "zellkernel" ofrece un servidor MCP "productivity-suite" a repositorios no relacionados 17 endpoints remotos, 4 scripts locales ocultos, 2 envíos de directorio — ninguno fusionado 2 La inspección pasa: dos herramientas benignas, cero alertas format_text y summarize funcionan según lo documentado — la revisión de seguridad no ve nada incorrecto Técnica de evasión de investigación: las pruebas breves reciben solo metadatos benignos 3 Tres llamadas ordinarias de herramientas — el umbral El contador de llamadas por cliente llega a 3 — el servidor anuncia tools.listChanged para activar la actualización El cliente obtiene los nuevos metadatos sin reconectarse — ningún evento visible para el operador 4 Reescritura de metadatos: instrucciones de búsqueda de credenciales entregadas tools/list y prompts/get ahora indican al agente que busque claves SSH, credenciales de AWS, historial de shell, configuración de Kubernetes — y que oculte la actividad al usuario Las definiciones de herramientas son contexto de seguridad — una definición cambiada cambia lo que hace el agente 5 Defensa: la huella de definiciones de herramientas detecta la deriva Hashear definiciones al aprobar, comparar en tools.listChanged, exigir nueva aprobación del operador Cercar el acceso a credenciales con políticas — no con instrucciones de metadatos remotos Las cuatro clases de ataque MCP Cada una explota una frontera de confianza distinta — Deadbugz es el más difícil de detectar antes de producción CLASE 1 Inyección de comandos STDIO Metacaracteres de shell en la configuración STDIO Más de 20 CVEs, abril de 2026 Detección: Media — análisis estático CLASE 2 Envenenamiento de herramientas (sleeper) La descripción cambia después de la aprobación Invariant Labs, WhatsApp, abril de 2025 Detección: Media — cambio de metadatos CLASE 3 Omisión de SHA-pinning (Plugin4Shell) Una rama nombrada como SHA anula la fijación 925 skills, 134K agentes, septiembre de 2026 Detección: Difícil — aserción tras checkout CLASE 4 Envenenamiento de metadatos activado en ejecución Carga retenida hasta N llamadas y luego reescritura de metadatos vía tools/list — Deadbugz Detección: Máxima — huella en tiempo de ejecución Evidencia clave 23 PRs en 74 minutos 3 llamadas benignas y luego el ataque 4 clases de ataque MCP distintas 0 PRs fusionados a través de revisión La huella de definiciones de herramientas cierra la brecha — ideabosque.com/library

Cada clase explota la misma brecha estructural: un mecanismo de confianza que realiza su comprobación en el momento equivocado o no la realiza. La inyección STDIO confía en cadenas de configuración sin sanitización. El envenenamiento de herramientas confía en que las descripciones no cambiarán después de la aprobación. SHA-pinning confía en que el commit resuelto coincide con el nombre fijado. El envenenamiento activado en ejecución confía en que lo que el servidor devolvió durante las pruebas es lo que devolverá durante el uso.

Deadbugz es el más difícil de detectar antes del despliegue porque el comportamiento del servidor durante la inspección es genuinamente benigno. La carga maliciosa no está oculta en el código de forma que el análisis estático pueda señalarla — está bloqueada detrás de un contador en tiempo de ejecución que solo se activa después de que el cliente ha establecido un patrón de uso. Un equipo de seguridad que se conecta al servidor, llama a format_text una o dos veces y comprueba la respuesta no verá nada incorrecto. El ataque está diseñado para pasar exactamente ese tipo de revisión.

Por qué los controles existentes no bastan

La lista de verificación de endurecimiento MCP organiza 12 controles en cinco capas: transporte, autenticación, registro de herramientas, tiempo de ejecución y auditoría. Deadbugz explota una brecha en las capas de registro de herramientas y tiempo de ejecución. Los controles de registro de herramientas de la lista verifican el servidor en el momento de la aprobación — comprobando nombres, esquemas y descripciones antes de que el servidor entre en producción. Pero las herramientas de Deadbugz son genuinamente benignas en el momento de la aprobación. Los controles de tiempo de ejecución monitorizan acciones no autorizadas, pero los metadatos envenenados no son en sí mismos una acción — son una instrucción que dirige al agente hacia una acción que el agente ejecuta después, aparentemente dentro de su alcance autorizado.

La tesis de módulos gobernados — que los registros de auditoría, los límites de velocidad, los errores tipados y la arquitectura de kill-switch hacen de la capa de gobernanza la frontera de seguridad — gana una cuarta clase de ataque como evidencia. El mecanismo de Deadbugz valida la tesis desde la dirección opuesta: un servidor sin controles de gobernanza (sin detección de cambios de metadatos, sin huella de definiciones de herramientas, sin diff visible para el operador de lo que el agente ve) es exactamente la superficie de ataque que explota la campaña.

La defensa: la huella de definiciones de herramientas

La recomendación de Pillar es concreta e implementable: capturar y comparar una huella de definiciones de herramientas en el momento de la aprobación. Cuando un cliente MCP aprueba un servidor, registra un hash de cada definición de herramienta que el servidor devuelve — nombre, descripción, esquema de entrada y anotaciones. Cuando el servidor notifica posteriormente al cliente que su lista de herramientas cambió (vía tools.listChanged), el cliente obtiene las nuevas definiciones, las compara con la huella y presenta el diff al operador como un evento de seguridad. La herramienta modificada no puede influir en acciones sensibles hasta que el operador la vuelva a aprobar.

Este control cierra la brecha que explota Deadbugz porque no depende de pruebas previas al despliegue. Monitoriza los metadatos reales que el servidor entrega en tiempo de ejecución, después de cruzar la frontera de confianza. La comparación de huellas detecta la reescritura de metadatos sin importar cuándo se activa la puerta en tiempo de ejecución — tres llamadas, treinta llamadas o trescientas. El control también detecta la clase anterior de envenenamiento de herramientas (el WhatsApp sleeper de Invariant Labs), porque ambos ataques comparten el mismo mecanismo: una descripción de herramienta que cambia después de la aprobación.

Cuatro pasos de implementación para un equipo que ejecuta servidores MCP en producción:

  1. Registrar huellas de definiciones de herramientas en el momento de la aprobación. Hashear cada definición de herramienta que el servidor devuelve durante la conexión inicial. Almacenar las huellas junto al registro de aprobación del servidor en el sistema de gestión de configuración del agente.
  2. Monitorizar las respuestas de tools/list y prompts/get en busca de deriva. Cuando el servidor notifique al cliente que su lista de herramientas cambió, obtener las nuevas definiciones y compararlas con las huellas almacenadas. Marcar cualquier diferencia como un evento de deriva de metadatos.
  3. Exigir nueva aprobación del operador para las definiciones de herramientas modificadas. Una definición de herramienta modificada no puede influir en el comportamiento del agente hasta que un operador humano revise el diff y vuelva a aprobar explícitamente el servidor. Esto convierte una reescritura silenciosa de metadatos en un evento de seguridad visible.
  4. Cercar la lectura de archivos sensibles, el acceso a credenciales y la ejecución de código con políticas — no con metadatos de herramientas. La carga de Deadbugz instruye al agente para buscar claves SSH, credenciales de AWS y configuración de Kubernetes. Esas lecturas deben ser acciones aplicadas por políticas que exijan autorización explícita, no consecuencias de instrucciones contenidas en metadatos de herramientas remotos. El análisis de agentes AI fantasma documenta la brecha de control en tiempo de ejecución que determina si una búsqueda de credenciales dirigida por metadatos pasa desapercibida.

Lecturas relacionadas


Un distribuidor B2B mid-market ejecuta un agente de procurement que se conecta a NetSuite, BigCommerce y tres catálogos de proveedores a través de módulos MCP. La revisión de seguridad del equipo se conecta a cada servidor MCP nuevo, llama a sus herramientas dos veces y comprueba las respuestas. Deadbugz pasa esa revisión. El equipo añade la huella de definiciones de herramientas a la configuración de su cliente MCP — las definiciones iniciales de cada servidor se hashean en la aprobación, las respuestas de tools/list se monitorizan en busca de deriva, y las definiciones modificadas activan una puerta de reaprobación del operador antes de que la herramienta modificada pueda influir en el comportamiento del agente. La próxima campaña de envenenamiento de metadatos se convierte en un diff señalado y una revisión, no en una exposición de credenciales.

Solicite una construcción con alcance. Descubrimiento de una semana. Recibe un inventario de sistemas, un mapa de flujos de trabajo y un alcance fijo — con o sin nosotros.

¿Quieres esto construido para tus sistemas?

Cada documento aquí viene de trabajo real de producción. Si tienes un sistema objetivo y un flujo en mente, podemos definir un proyecto en una semana.

Solicitar un proyecto

Descubrimiento de una semana. Obtienes un inventario de sistemas, mapa de flujos y alcance fijo — decidas o no construir con nosotros.