Seguridad de agentes
Los agentes leen texto escrito por desconocidos y luego actúan con tus credenciales. Esta página presenta la regla fundamental, las dos listas OWASP de 2026, los incidentes ocurridos hasta ahora y las defensas que los habrían evitado.
La tríada letal
- Acceso a datos privadosCorreo electrónico, repositorios, bases de datos, archivos o cualquier otro recurso protegido por tus credenciales.
- Exposición a contenido no confiablePáginas web, incidencias, tickets de soporte, correos entrantes y descripciones de herramientas: cualquier texto que pueda escribir un atacante.
- Capacidad de comunicarse con el exteriorEnviar correo, abrir pull requests, obtener URL o cargar imágenes remotas. Simon Willison dio nombre a esta combinación de tres elementos en junio de 2025.
Si un agente reúne los tres elementos, da por hecho que una inyección de prompt puede hacer que entregue tus datos a un atacante. No confíes en que el modelo se niegue: elimina al menos uno de los elementos de cada agente y sesión.
Lista de verificación de seguridad
22 comprobaciones sobre entradas, herramientas, entorno de ejecución, MCP, CI y operaciones. Márcalas a medida que avances y exporta el resultado como archivo Markdown.
Registro de incidentes
Para cada incidente público de seguridad de agentes desde abril de 2025: qué ocurrió, por qué funcionó el ataque y qué debes cambiar en tu propia configuración.
Incidentes recientes
- Secuestro de sesiones y acceso a tareas de otras sesiones en el MCP Python SDK
- La aprobación automática de WebFetch en Claude Code permitió exfiltrar datos a través de huggingface.co
- Comment and Control: el texto de los PR roba secretos de agentes de CI
- El MCP TypeScript SDK filtró respuestas entre clientes
- ClawHavoc: cientos de skills maliciosas de ClawHub distribuyen AMOS
OWASP Top 10 para aplicaciones agénticas 2026
El OWASP GenAI Security Project publicó esta lista el 9 de diciembre de 2025. Abarca los riesgos que surgen cuando un modelo planifica, conserva memoria, usa herramientas y trabaja junto con otros agentes.
ASI01Secuestro del objetivo del agenteUn atacante cambia el objetivo que persigue el agente, normalmente mediante instrucciones ocultas en el contenido que lee. El agente acaba persiguiendo el objetivo del atacante con las herramientas y los permisos del usuario.
ASI02Uso indebido y explotación de herramientasEl agente usa herramientas legítimas de forma dañina, por ejemplo, para borrar registros, enviar mensajes o encadenar llamadas, porque ha sido manipulado o porque dispone de herramientas con más permisos de los necesarios para la tarea.
ASI03Abuso de identidad y privilegiosLos agentes actúan mediante credenciales, tokens delegados y permisos heredados. Los atacantes aprovechan esas identidades, o las brechas entre ellas, para escalar privilegios o actuar en nombre de otra persona.
ASI04Vulnerabilidades en la cadena de suministro agénticaLas herramientas, los servidores MCP, las skills, los plugins, los modelos y los prompts que se cargan durante la compilación o en tiempo de ejecución pueden ser maliciosos o estar comprometidos. Como los agentes cargan muchos de estos componentes de forma dinámica, un solo componente malicioso afecta a todas las sesiones que lo usan.
ASI05Ejecución de código inesperada (RCE)Los agentes que escriben y ejecutan código, o que envían la salida del modelo a shells e intérpretes, pueden ser inducidos a ejecutar en el host los comandos elegidos por el atacante.
ASI06Envenenamiento de memoria y contextoLos atacantes introducen datos falsos o instrucciones en la memoria del agente, en documentos recuperados o en el contexto guardado. El envenenamiento persiste y condiciona sesiones posteriores mucho después de que desaparezca la entrada original.
ASI07Comunicación insegura entre agentesLos mensajes entre agentes circulan sin la autenticación, las comprobaciones de integridad o la validación adecuadas, por lo que pueden suplantarse, reproducirse o modificarse para engañar al agente que los recibe.
ASI08Fallos en cascadaUn fallo, como una entrada envenenada, un resultado incorrecto de una herramienta o un agente comprometido, se propaga por los agentes conectados y los pasos automatizados más rápido de lo que las personas pueden detectarlo.
ASI09Explotación de la confianza en los agentesLos agentes parecen seguros de sí mismos y serviciales, por lo que las personas tienden a aprobar sus propuestas. Los atacantes aprovechan esa confianza para conseguir que alguien confirme una acción dañina o revele información.
ASI10Agentes fuera de controlUn agente comprometido o que se ha desviado de su comportamiento previsto sigue actuando por su cuenta, fuera del alcance y la supervisión que se le habían asignado.
OWASP Top 10 para aplicaciones con LLM 2026
Esta edición se publicó el 4 de agosto de 2026 y sustituye a la lista de 2025. Excessive Agency pasó del sexto al tercer puesto y System Prompt Leakage cambió de nombre a Hidden Context Exposure.
LLM01Inyección de promptsUna entrada altera el comportamiento del modelo de formas que el desarrollador no pretendía. Puede proceder directamente del usuario o, de forma indirecta, de documentos, páginas web y resultados de herramientas que el modelo consulta.
LLM02Divulgación de información confidencialEl modelo o la aplicación revela datos personales, credenciales, secretos comerciales u otro material confidencial en sus respuestas, procedente de los datos de entrenamiento, el contexto o los sistemas conectados.
LLM03Exceso de agenciaLa aplicación concede al modelo más funciones, permisos o autonomía de los que requiere la tarea, de modo que una respuesta manipulada o errónea causa daños reales. Pasó del sexto puesto en 2025 al tercero en 2026.
LLM04Cadena de suministroLos modelos, conjuntos de datos, adaptadores, paquetes y plugins de terceros pueden estar manipulados o ser vulnerables, y trasladan ese riesgo a tu aplicación.
LLM05Envenenamiento de datos y modelosLos atacantes manipulan los datos de preentrenamiento, ajuste fino o embeddings para introducir puertas traseras, sesgos o comportamientos defectuosos que solo se manifiestan más adelante en producción.
LLM06Consumo ilimitadoSin límites para las solicitudes, el tamaño de las entradas o la capacidad de cómputo, los atacantes pueden disparar los costes, agotar los recursos o copiar un modelo mediante consultas de gran volumen.
LLM07DesinformaciónEl modelo genera resultados falsos o engañosos que parecen creíbles, y los usuarios o los sistemas posteriores actúan basándose en ellos sin verificarlos.
LLM08Exposición del contexto ocultoAntes: filtración del prompt del sistema. Se pueden extraer los prompts del sistema, las instrucciones ocultas y otros datos de contexto que el usuario no debería ver, exponiendo las reglas, la lógica o los secretos incluidos en ellos.
LLM09Debilidades en vectores y embeddingsLos fallos en la generación, el almacenamiento y la recuperación de embeddings permiten a los atacantes inyectar contenido, filtrar datos entre tenants o recuperar el texto original. Los sistemas RAG son los más afectados.
LLM10Gestión inadecuada de las salidasLos resultados del modelo llegan a navegadores, shells, bases de datos u otros componentes sin validación ni codificación, lo que abre la puerta a XSS, inyección SQL, ejecución de código y exfiltración de datos.
Defensas
Quince defensas documentadas, cada una con un enlace a su fuente. Combina varias, porque ninguna detiene por sí sola todos los ataques.
Rompe la trifecta letal
La regla de Simon Willison: cualquier texto que lea un agente capaz de leer datos privados, consultar contenido no confiable y enviar datos al exterior puede volverse en tu contra. Elimina al menos una de estas tres capacidades de cada agente o sesión. Por ejemplo, el agente que clasifica incidencias públicas no debe tener acceso a secretos, y el que los maneja no debe disponer de un canal de salida.
Limita al agente tras recibir entradas no confiables
La investigación sobre patrones de diseño para la seguridad de agentes establece una regla: una vez que un agente ha procesado una entrada no confiable, esa entrada no debe poder desencadenar acciones con consecuencias. Entre los patrones se incluyen el selector de acciones, planificar y luego ejecutar, el uso de dos LLM y la minimización del contexto. Elige uno por flujo de trabajo; por ejemplo, fija el plan antes de que el agente lea datos no confiables.
Rastrea el flujo de datos con CaMeL
CaMeL divide el agente en dos: un planificador con privilegios escribe código a partir de la solicitud del usuario, y un modelo aislado procesa los datos no confiables. Los valores del modelo aislado llevan etiquetas de capacidades, y las políticas comprueban esas etiquetas antes de ejecutar cualquier herramienta. En el artículo, resolvió el 77% de las tareas de AgentDojo con seguridad demostrable, frente al 84% de un agente sin defensas.
Usa credenciales con privilegios mínimos
De forma predeterminada, concede a los agentes acceso de solo lectura y limitado al proyecto. Nunca les des una clave de administrador ni una clave service_role, que en Supabase omite la seguridad a nivel de fila. Limita los tokens de CI y del repositorio al único trabajo que deben realizar. El incidente de Amazon Q Developer se debió a un token de GitHub con permisos excesivos en CodeBuild.
Exige aprobación para las acciones con consecuencias
Haz que una persona confirme las llamadas a herramientas que escriban, eliminen, envíen o gasten dinero, y deniega la acción si nadie responde. Supabase recomienda aprobar manualmente las llamadas a herramientas MCP. En OpenClaw, configura tools.exec.ask como always y deja askFallback en deny. Muestra todos los argumentos para que quien revise la solicitud vea exactamente qué se va a ejecutar.
Aísla en un sandbox la ejecución de código y herramientas
Ejecuta los comandos de shell y el código generado en un contenedor o una VM sin credenciales y con acceso únicamente al espacio de trabajo. OpenClaw incluye el aislamiento en sandbox desactivado y tools.exec.security en full en los hosts del gateway. Por tanto, activa el aislamiento en sandbox, configura la seguridad de exec como deny o allowlist, establece fs.workspaceOnly en true y mantén desactivado el modo elevado. Comprueba el resultado con openclaw sandbox explain.
Restringe el tráfico de red saliente
Deniega de forma predeterminada el tráfico saliente de los agentes y servidores MCP, y luego permite solo los hosts que necesite cada uno. No apruebes automáticamente solicitudes a hosts multiusuario donde cualquiera pueda publicar contenido: así fue como CVE-2026-54316 convirtió huggingface.co en un canal de exfiltración. Un servidor de correo debería poder conectarse a su API de correo y a nada más, como demostró postmark-mcp.
Mantén los planos de control fuera de Internet
Vincula los gateways de agentes, los paneles y los proxies de depuración a loopback, y exige un token de al menos 24 caracteres, por ejemplo, generado con openssl rand -hex 32. Accede a ellos de forma remota mediante un túnel SSH o Tailscale Serve, y usa Tailscale Funnel solo con autenticación por contraseña. Ejecuta openclaw security audit --deep de forma periódica.
Valida la audiencia de los tokens MCP
La especificación de autorización de MCP exige que el servidor rechace los tokens de acceso que no se hayan emitido para él, y prohíbe reenviar el token de un cliente a una API upstream. Los clientes envían indicadores de recurso RFC 8707 para vincular cada token a un único servidor. Un servidor proxy necesita el consentimiento de cada cliente; de lo contrario, se convierte en un confused deputy.
Aísla las sesiones y los tenants de MCP
Crea una instancia independiente del servidor y del transporte para cada sesión, en lugar de compartir una entre clientes. Vincula cada sesión y tarea a la identidad autenticada que la creó, y comprueba esa vinculación en cada solicitud. Los dos avisos de seguridad de los SDK de MCP de 2026 se debieron a estados compartidos o sin vincular.
Verifica skills, plugins y servidores MCP
Fija versiones exactas, revisa el diff antes de cada actualización y comprueba los resultados de escáneres como VirusTotal y el estado de la auditoría de seguridad de ClawHub. Guarda un hash de las descripciones de las herramientas cuando apruebes un servidor y genera una alerta si cambian; así podrás detectar rug pulls. OpenClaw no bloquea nada de forma integrada durante la instalación, así que configura security.installPolicy por tu cuenta.
Controla quién puede enviar mensajes al agente
Limita el acceso por mensaje directo al emparejamiento o a una lista de permitidos, exige una mención antes de que el agente actúe en chats grupales y configura session.dmScope como per-channel-peer para que los remitentes nunca compartan el contexto. Cualquiera que pueda enviar mensajes al agente puede intentar darle instrucciones, así que la lista de remitentes forma parte de tu superficie de ataque.
Mantén los secretos fuera de las ejecuciones de CI no confiables
No ejecutes un agente con secretos del repositorio en flujos de trabajo que personas ajenas puedan activar mediante un pull request, un issue o un comentario. Trata como hostiles los títulos, las descripciones y los comentarios de esos eventos. Si un paso realmente necesita secretos, ejecútalo solo después de que una persona mantenedora haya aprobado la ejecución.
Trata la salida del modelo como no confiable
Codifica o sanea la salida del modelo antes de mostrarla, y nunca la pases sin comprobar a un shell, una consulta SQL o un navegador. Bloquea la carga automática de imágenes Markdown y de enlaces a dominios externos, y establece una Content Security Policy estricta. EchoLeak exfiltró datos mediante URL que se cargaban por sí solas.
Verifica las firmas del agente y luego autorízalo
Para identificar a un agente que accede a tu sitio o API, verifica su firma Web Bot Auth con las claves que publica el operador en /.well-known/http-message-signatures-directory. ChatGPT agent firma como Signature-Agent https://chatgpt.com. Una firma válida te indica quién opera el agente, no qué usuario lo ha enviado ni qué puede hacer ese usuario. Por tanto, autoriza cada solicitud por separado.
Preguntas sobre la seguridad de agentes
¿Qué es la inyección de prompt en los agentes de IA?
El prompt injection es texto que el modelo interpreta como instrucciones aunque haya llegado como dato, por ejemplo, en una página web, un correo electrónico o la descripción de una herramienta. En un agente, esas instrucciones pueden provocar llamadas a herramientas que se ejecuten con tus credenciales. OWASP lo incluye como LLM01:2026, y Agent Goal Hijack (ASI01) abarca su forma agéntica.
¿Qué es la tríada letal de los agentes de IA?
Es el nombre que Simon Willison da a un agente que combina acceso a datos privados, exposición a contenido no confiable y una forma de comunicarse con el exterior. Si se dan las tres condiciones, un prompt injection puede leer tus datos y enviarlos fuera. La filtración del token de Supabase MCP de 2025 es un caso de manual.
¿Cómo protejo un servidor MCP?
Rechaza los tokens de acceso que no se hayan emitido para tu servidor y nunca reenvíes el token de un cliente a una API upstream. Crea una instancia de servidor y otra de transporte por sesión, y vincula las sesiones y las tareas al usuario autenticado. Usa el SDK de TypeScript 1.26.0 o posterior y el SDK de Python 1.27.2 o posterior, que corrigen una filtración de respuestas entre clientes y el secuestro de sesiones.
¿Un mejor prompt de sistema puede detener el prompt injection?
No confíes en ello. La investigación sobre patrones de diseño para agentes sostiene que, una vez que un agente ha procesado entradas no confiables, hay que limitarlo para impedir que esas entradas provoquen acciones con consecuencias. CaMeL, que lo consigue mediante el seguimiento de capacidades, resolvió el 77% de las tareas de AgentDojo con seguridad demostrable, frente al 84% de un agente sin protección.
¿Qué diferencia hay entre OWASP LLM Top 10 y Agentic Top 10?
OWASP Top 10 for LLM Applications, cuya edición de 2026 se publicó el 4 de agosto de 2026, abarca los riesgos de cualquier aplicación basada en un modelo de lenguaje. OWASP Top 10 for Agentic Applications, publicado el 9 de diciembre de 2025, aborda los cambios que se producen cuando el modelo planifica, usa herramientas, conserva memoria y se comunica con otros agentes. La mayoría de quienes desarrollan agentes necesitan tener en cuenta ambos.
¿Es seguro exponer un gateway de OpenClaw a Internet?
No. Deja gateway.bind con su valor predeterminado, loopback, y usa un túnel SSH o Tailscale Serve cuando necesites acceso remoto. OpenA2A contabilizó 192,492 gateways expuestos el 1 de septiembre de 2026, y CVE-2026-25253 demostró que incluso las instalaciones limitadas a loopback necesitan parches cuanto antes.