Envenenamiento de terminación: atrapar a un agente LLM en bucles sin fin
Un artículo de arXiv de mayo de 2026 muestra que una inyección puede distorsionar el juicio de fin de tarea de un agente y provocar cómputo ilimitado. El framework LoopTrap reporta hasta 25x de amplificación.
¿Qué es esto?
El 7 de mayo de 2026, el artículo LoopTrap: Termination Poisoning Attacks on LLM Agents (arXiv:2605.05846, cs.CR) introdujo una clase de ataque que apunta a una parte del bucle del agente que la mayoría de las defensas ignoran: el momento en que el agente decide que ha terminado.
Los agentes modernos operan en un bucle iterativo — razonar, actuar, observar y luego autoevaluar si la tarea está completa. El artículo muestra que, al inyectar texto en el contexto del agente, un atacante puede corromper esa autoevaluación: el agente concluye que la tarea no está terminada y sigue trabajando. El resultado no es robo de datos ni ejecución remota de código, sino cómputo ilimitado — tokens desperdiciados, facturas infladas y capacidad de agente bloqueada. Los autores lo llaman envenenamiento de terminación (Termination Poisoning) y reportan que su framework automatizado, LoopTrap, alcanza una amplificación media de 3,57x en 8 agentes habituales, con un pico de 25x.
Cómo funciona
La condición de parada de un agente es en sí misma un juicio del LLM: tras cada paso, el modelo relee la trayectoria y responde, en esencia, «¿se ha cumplido el objetivo?». Como ese juicio consume la misma ventana de contexto que las salidas de herramientas, los documentos recuperados y las páginas web no confiables, hereda la debilidad fundamental de toda inyección: no existe frontera entre datos e instrucciones.
El envenenamiento de terminación explota exactamente esto. Contenido adverso colocado donde el agente lo leerá — una respuesta de API, un archivo, un resultado web — se diseña para empujar la decisión «¿hemos terminado?» hacia no. El artículo caracteriza 10 estrategias representativas y observa que los agentes tienen firmas de comportamiento distintas: una trampa que hace entrar en bucle a un agente puede no tener efecto en otro. LoopTrap lo convierte en red-teaming: primero construye un perfil de comportamiento del objetivo según cuatro dimensiones de vulnerabilidad mediante sondeo ligero, luego sintetiza una trampa específica, puntúa candidatos y refina los fallos.
Aquí no se reproduce ningún payload. El mecanismo es lo importante: el control de finalización del agente es una superficie de ataque, orientable igual que la inyección indirecta orienta la selección de herramientas.
Bucle normal: Bucle envenenado:
razonar razonar
actuar actuar
observar observar <- inyectado "no has terminado"
fin? -> SI (parar) fin? -> NO (sigue... y sigue)
Es la imagen inversa de los ataques de recursos conocidos. Donde el drenaje de tokens por cadena de herramientas y el DoS por razonamiento de barrera inflan el coste de una sola decisión, el envenenamiento de terminación ataca el número de iteraciones — y la idea no es nueva: Johann Rehberger ya señalaba los bucles de coste/DoS de los LLM en 2023.
Por qué importa
La disponibilidad y el coste son propiedades de seguridad reales para los sistemas autónomos. Un agente atascado en un bucle envenenado quema gasto de API facturado por uso, ocupa una ranura de procesamiento que necesitan las tareas legítimas y puede agotar presupuestos en silencio antes de que nadie lo note. Con 25x de amplificación, un único documento manipulado convierte una tarea en el cómputo de veinticinco. Para flotas de agentes que procesan entradas no confiables — clasificación de correo, gestión de tickets, investigación web — es un vector de denegación de servicio y de «denegación de cartera» que los filtros de entrada clásicos, ajustados para exfiltración o inyección de comandos, no vigilan.
También socava una suposición de seguridad común: que un agente dejado en marcha acabará por detenerse. Si la terminación puede manipularse desde fuera, «terminará solo» no es un control.
Defensas
La corrección es arquitectónica — nunca dejar que contenido no confiable arbitre cuándo se detiene el agente.
- Imponer límites externos estrictos. Limite las iteraciones, el tiempo de reloj, el total de tokens y de llamadas a herramientas por tarea en el orquestador, fuera del juicio del modelo. Es la mitigación más eficaz: el bucle debe estar acotado por código, no por la opinión del LLM.
- Hacer la terminación determinista cuando sea posible. Para tareas estructuradas, verifique la finalización contra criterios de éxito explícitos y comprobables por máquina en vez de preguntar al modelo «¿has terminado?».
- Presupuestar y medir por tarea. Fije techos de tokens/coste por tarea con alertas, y falle de forma segura cuando una tarea supere su envoltura esperada — un número de pasos atípico es una señal de anomalía fuerte.
- Separar datos no confiables del razonamiento de control. Mantenga las salidas de herramientas y el texto recuperado en zonas claramente delimitadas y de menor confianza, y evite alimentar contenido no confiable en crudo al paso de evaluación de finalización. Es la misma lógica de contención descrita en la contención de inyección a velocidad de máquina.
- Vigilar la distribución de pasos. Siga las iteraciones por tarea en toda la flota; una amplificación repentina ante ciertas entradas señala un intento de envenenamiento.
- Hacer red-teaming de la condición de parada. Pruebe los agentes de forma adversa para el comportamiento de bucle, no solo para la fuga de datos — el marco del lethal trifecta debería incluir «capacidad de consumir recursos sin límite».
Estado
| Elemento | Referencia | Fecha | Notas |
|---|---|---|---|
| Publicación del artículo | arXiv:2605.05846 (v1) | 2026-05-07 | Define el envenenamiento de terminación; 10 estrategias |
| Alcance empírico | Evaluación LoopTrap | 2026-05-07 | 8 agentes habituales, 60 tareas |
| Impacto reportado | LoopTrap | 2026-05-07 | 3,57x de amplificación media, pico de 25x |
| Antecedente (bucles coste/DoS LLM) | Embrace The Red | 2023-09-16 | Alerta temprana sobre el abuso de bucle infinito |
La lección es simple y antigua: un bucle autónomo que no acotas es un bucle que un atacante puede acotar por ti. La terminación es una decisión de control: trátela como tal — impóngala en el código, no en un prompt.