VORVEXAPEX

Prompt injection: el ataque que se volvió el problema número 1 para quien puso un agente de IA a trabajar

Apenas un agente de IA obtiene acceso a una herramienta, un archivo o una shell, prompt injection deja de ser un truco de chatbot y se vuelve un camino hacia la ejecución de comandos. Un panorama técnico con un caso real confirmado.

Por Equipo VorvexPublicado el 14 de agosto de 20265 min de lectura

Prompt injection no es nuevo, el término circula desde los primeros LLM en producción. Lo que cambió es el tamaño del daño. Mientras el modelo solo respondía texto, una instrucción escondida en un prompt malicioso producía, en el peor de los casos, una respuesta incómoda. Ahora que los agentes de IA leen correo, abren archivos, llaman APIs y ejecutan comandos en nombre de un usuario, esa misma instrucción escondida se convierte en una acción real: un comando ejecutado, un dato exfiltrado, una configuración alterada sin que nadie la aprobara conscientemente.

Qué es prompt injection, en la práctica

Es la técnica de insertar una instrucción dentro de contenido que el modelo va a procesar, de forma que el modelo trate esa instrucción como un comando legítimo del operador. Existen dos variantes principales. En la inyección directa, el propio usuario escribe el prompt malicioso, generalmente para eludir el filtro de seguridad del modelo (jailbreak). En la inyección indirecta, la que preocupa en entornos agenticos, el atacante planta la instrucción en un contenido que el agente va a leer después, sin interacción directa con él: un comentario de issue, una página web, un archivo, el cuerpo de un correo. El modelo no distingue de forma confiable 'esto es dato que debo procesar' de 'esto es instrucción que debo seguir', porque ambos llegan por el mismo canal: texto.

Diagrama que compara la inyección directa (usuario escribiendo en el chat) con la inyección indirecta (instrucción oculta en un documento que el agente procesa)
La inyección directa parte del propio usuario; la indirecta viene de contenido externo que el agente procesa sin saber que está comprometido.

De la conversación a la ejecución de comandos: el caso de GitHub Copilot

El ejemplo más concreto de 2025 es el CVE-2025-53773, publicado el 12 de agosto y clasificado como inyección de comandos (CWE-77) en GitHub Copilot y Visual Studio. La National Vulnerability Database y el GitHub Security Advisory (GHSA-3m2x-p87c-pwv6) confirman un CVSS 3.1 de 7.8 (AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H), que afecta a Visual Studio 2022 en las versiones 17.14.0 a 17.14.11, corregido en la 17.14.12. Vale la pena registrarlo: varias publicaciones sobre el tema repitieron un CVSS de 9.6, un número que no coincide con lo que consta en las fuentes oficiales, exactamente el tipo de error que evitamos acá.

El mecanismo es lo que importa. Contenido malicioso plantado en algo que Copilot procesa, como un archivo del proyecto o una descripción de issue, instruye al agente a editar el archivo de configuración `.vscode/settings.json` y activar la opción `chat.tools.autoApprove`. Con esa bandera activa, Copilot empieza a ejecutar herramientas y comandos sin pedir confirmación explícita del usuario, el llamado modo YOLO. A partir de ahí, el próximo comando que el agente decida correr (por instrucción del mismo contenido malicioso) se ejecuta localmente sin ninguna barrera. Prompt injection deja de tratarse de engañar al modelo y pasa a tratarse de apagar el único control que quedaba en pie: la confirmación humana.

Diagrama con cuatro pasos numerados que representan la cadena de un ataque de prompt injection: contenido malicioso, instrucción absorbida por el agente, acción con una herramienta privilegiada, dato exportado o comando ejecutado.
La cadena típica de explotación: el contenido lleva una instrucción escondida, el agente la procesa como comando, una herramienta con privilegio la ejecuta, el dato sale o el comando corre sin revisión humana.

No es un caso aislado ni exclusivo de un proveedor

En marzo de 2026, el CVE-2026-2256 documentó una falla equivalente en MS-Agent, el framework de agentes de ModelScope: entrada derivada de un prompt, sin sanitizar, permite ejecutar comandos arbitrarios del sistema operativo, CVSS 3.1 de 6.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N), que afecta la versión v1.6.0rc1 y anteriores, también clasificada como CWE-77. Dos proveedores distintos, dos arquitecturas de agente distintas, la misma raíz del problema: un comando derivado de contenido que debería tratarse como dato, ejecutado sin sanitización suficiente. No es casualidad que prompt injection ocupe el primer lugar del OWASP Top 10 para aplicaciones LLM desde que existe la lista.

Diagrama de arquitectura que muestra contenido externo no confiable fluyendo a través de un agente de IA hacia acceso privilegiado a sistema, API y archivos
Se repite la misma arquitectura de riesgo: entra contenido externo, el agente lo procesa, y el resultado sale con acceso privilegiado, sin importar el proveedor.

Por qué es difícil de resolver de una vez por todas

La dificultad es estructural, no es falta de parche. Un LLM recibe instrucciones del sistema, contexto de la conversación y contenido externo por el mismo canal de texto, sin separación criptográfica ni estructural confiable entre 'esto es un comando' y 'esto es un dato a procesar'. Los filtros de palabras y los clasificadores de intención ayudan, pero son heurísticas, no garantías, y cada generación de defensa produce una nueva generación de técnicas de ofuscación para eludirla. Lo que realmente cambia el riesgo no es hacer perfecto al modelo, es limitar lo que una instrucción inyectada puede hacer incluso cuando pasa desapercibida.

Diagrama que muestra instrucción del sistema y datos externos llegando al modelo por el mismo canal de texto, indistinguibles entre sí
El problema estructural: comando y datos llegan por el mismo canal de texto, sin separación criptográfica o estructural confiable entre ambos.

Defensa en capas: lo que reduce el riesgo de verdad

  • Tratar todo contenido externo (página web, PR, correo, archivo, respuesta de API de terceros) como dato no confiable, nunca como instrucción, incluso dentro del propio prompt de sistema del agente
  • Correr las herramientas del agente en un sandbox aislado, sin acceso directo a la shell del host, al sistema de archivos sensible o a la red sin restricciones
  • Exigir confirmación humana explícita para acciones de alto riesgo (ejecución de comandos, envío de datos hacia afuera, cambio de configuración), con la aprobación automática apagada por defecto
  • Aplicar el mínimo privilegio en las credenciales y alcances otorgados al agente, nunca reutilizar un token de uso amplio
  • Registrar y monitorear toda acción tomada por el agente, con alerta ante patrones de uso fuera de lo esperado
  • Incluir al agente y sus integraciones en el alcance del pentest, probando prompt injection igual que se prueba cualquier otra superficie de entrada no confiable
Diagrama de círculos concéntricos numerados del 1 al 4 alrededor de un candado, que representa capas sucesivas de defensa contra prompt injection.
Defensa en profundidad: ninguna capa por sí sola lo resuelve, pero cada una reduce el daño si la anterior falla.

Qué cambia esto para quien está evaluando contratar un pentest

Un agente de IA con acceso a una herramienta, un archivo o una API dejó de ser un experimento del equipo de producto y se convirtió en una superficie de ataque con el mismo peso que una API o una red interna. Si la empresa ya puso en producción un copiloto de código, un agente de atención o una automatización guiada por LLM, esa integración necesita entrar en el alcance de la próxima evaluación de seguridad, no como un ítem extra, como un ítem estándar.

← Volver al blog

¿Quieres esa misma profundidad aplicada a tu entorno?

Cuéntanos qué necesitas validar y el equipo arma un alcance de pentest a medida.

Hablar por WhatsApp

¿Listo para evaluar el riesgo de su empresa?