DeepJack: argumentos ocultos en el deeplink de instalación MCP de Cursor llevan a ejecución de código
Un enlace cursor:// manipulado instala un servidor MCP controlado por el atacante cuyo comando real se desplaza fuera de la pantalla en el diálogo, logrando ejecución de código sin sandbox tras un solo clic.
En resumen La atención a la seguridad de los agentes de programación se centra sobre todo en la inyección de prompts y en las cadenas de suministro de MCP. Un análisis publicado por Adversa AI el 15 de julio de 2026 señala una superficie más silenciosa: el manejador de esquema de URL
cursor://que Cursor registra al instalarse. Un deeplink manipulado puede pilotar el IDE para instalar un servidor MCP controlado por el atacante y ejecutar un comando sin sandbox bajo la cuenta de la víctima, tras un solo clic y una sola confirmación — porque el diálogo de instalación no muestra de forma fiable el comando que pide aprobar. Los investigadores llaman a esta clase de fallo DeepJack. El problema de visualización subyacente se conocía internamente ya el 27 de abril de 2026 y, según el informe, seguía reproduciéndose en Cursor 3.9.8 en el momento de la publicación.
¿Qué es esto?
Cursor, como la mayoría de las herramientas de programación de escritorio, registra un esquema de URL personalizado (cursor://) para que los enlaces piloten el IDE: abrir un archivo, iniciar la revisión de un pull request, instalar un servidor MCP. La ruta de instalación acepta un nombre de servidor y una configuración codificada en base64 que describe el comando a ejecutar. Ese comando se ejecuta con toda la autoridad del desarrollador — sin ningún sandbox entre él y sus archivos, tokens y shell.
DeepJack es la observación de que el diálogo de confirmación destinado a proteger esta instalación puede ser inducido a ocultar precisamente lo que el usuario aprueba. Se apoya en un fallo de deeplink de Cursor ya divulgado públicamente (corregido en Cursor 1.3) cuyo remedio consistía en mostrar los argumentos del comando. La investigación DeepJack demuestra que mostrarlos no basta si el diálogo los hace ilegibles.
Cómo funciona
El informe describe dos variantes de la misma debilidad. Las resumimos a nivel conceptual; aquí no se reproduce ningún payload funcional.
La primera es una debilidad de renderizado en el diálogo de instalación. Los argumentos se muestran en un campo de texto de una sola línea. El atacante rellena la parte visible con una larga secuencia de caracteres en blanco/de control, de modo que un token de aspecto inocuo (por ejemplo un comando de calculadora) es todo lo que cabe en pantalla, mientras la cola maliciosa — un comando saliente [REDACTED] — se desplaza fuera del borde derecho. El usuario lee el prefijo inofensivo y aprueba; Cursor ejecuta la cadena completa.
La segunda es un blanqueo de confianza mediante un deeplink anidado. Una segunda URI de instalación cursor:// se codifica en URL por partida doble y se incrusta en el parámetro url de un enlace pr-review de aspecto rutinario. El enlace externo se analiza una vez como una solicitud de revisión de código y el parámetro anidado nunca se revalida de forma recursiva: la URI de instalación pasa así como una cadena opaca y llega al manejador de instalación aguas abajo. La víctima cree haber hecho clic en «revisar este PR», no en «instalar un servidor».
Despojado de sus trucos de codificación, se trata de inyección de argumentos a través de un manejador de esquema de URL personalizado (CWE-88) — una clase de fallo de escritorio de hace décadas, con antecedentes muy lejos del utillaje de IA. Lo nuevo es dónde aterriza.
Por qué importa
El endpoint comprometido es una estación de trabajo de desarrollador: claves SSH, credenciales de nube, código fuente, tokens de sesión activos, y un camino directo hacia la CI y producción. Un fallo de manejador de URL que sería una simple molestia en un reproductor multimedia se convierte aquí en un punto de apoyo en la cadena de suministro de software.
La probabilidad de que un enlace concreto tenga éxito es modesta — siempre se requiere un clic y una aprobación. El problema es la asimetría: baja probabilidad, radio de impacto casi total. Y la superficie está en gran medida sin vigilar. Un repaso multiagente en el mismo informe muestra que la mayoría de las herramientas de programación populares (Cursor, VS Code, Windsurf, Warp, y otras) registran un manejador de URL, y que la mayoría exponen una ruta que termina en instalar-o-ejecutar — manejadores que muchos equipos de seguridad ignoraban que estuvieran registrados.
Defensas
No necesita un parche del proveedor para reducir la exposición.
- Ponga los servidores MCP en lista blanca mediante ajustes gestionados. Permita solo servidores nombrados de fuentes auténticas (su organización o el mantenedor original) y bloquee cualquier instalación iniciada por el usuario o el agente.
- Filtre las rutas de deeplink de instalar/ejecutar en la pasarela. Bloquee o ponga en cuarentena los patrones de URI de instalación específicos (
cursor://…/mcp/install,vscode://mcp/install, la instalación por registro de Windsurf,warp://launch/de Warp) en las pasarelas de correo y web que transportan el cebo. - Audite y, cuando sea posible, desactive los manejadores de esquema de URL personalizados (
cursor://,vscode://,codex://,claude-cli://) en las máquinas de desarrollo — empiece por inventariar cuáles están registrados. - Vigile lo que los agentes lanzan. Genere alertas ante cualquier definición de servidor MCP nueva o modificada. La señal de alto valor — lo que se mostró al usuario frente a lo que realmente se ejecutó — requiere visibilidad en línea sobre el tráfico MCP del agente.
- Trate cada parámetro de deeplink como una entrada hostil, y cada diálogo de consentimiento como insuficiente por sí solo. Mantenga a los agentes lejos de bases de código no confiables y no dependa de una única pantalla de confirmación como toda la frontera.
Status
| Elemento | Referencia | Fecha | Notas |
|---|---|---|---|
| Divulgación DeepJack | Adversa AI | 2026-07-15 | Dos variantes; reproducida en Cursor 3.9.8 |
| Fallo previo relacionado | CVE-2025-54133 (GHSA-r22h-5wp2-2wfv) | 2025 | El diálogo no mostraba los argumentos; corregido en Cursor 1.3 |
| Causa raíz (diálogo) | Triaje de Cursor (según el informe) | 2026-04-27 | El campo de una línea deja que el contenido se desplace fuera de vista |
| Weaponización previa de deeplink | Proofpoint «CursorJack» | 2025 | Phishing hacia ejecución de comando vía deeplink de instalación |
| Estado del proveedor | Informes cerrados como duplicados | 2026 | Primitiva reportada activa en la publicación |
El encuadre correcto no es «un fallo más de Cursor». Es que las herramientas de programación agénticas han reconstruido cada una desde cero el viejo mensaje «¿seguro que quiere ejecutar esto?» — y le piden que muestre de forma segura comandos suministrados por el atacante, en las máquinas más valiosas de una organización, sin nada detrás.
Sources
- → https://adversa.ai/blog/cursor-security-deepjack-deeplink-vulnerability-mcp-rce/
- → https://nvd.nist.gov/vuln/detail/CVE-2025-54133
- → https://github.com/cursor/cursor/security/advisories/GHSA-r22h-5wp2-2wfv
- → https://www.proofpoint.com/us/blog/threat-insight/cursorjack-weaponizing-deeplinks-exploit-cursor-ide
- → https://cwe.mitre.org/data/definitions/88.html