sistema: OPERATIVO
← volver a todos los hacks
DEFENSE LOW NEW

Separadores dinámicos: reforzar Polymorphic Prompt Assembling frente a la inyección

Un artículo de arXiv del 28 de mayo de 2026 corrige un fallo de «radio de impacto» en Polymorphic Prompt Assembling generando un separador SHA-256 único por petición, bajando la tasa de éxito de un payload de 0,88 a 0,38.

2026-06-02 // 6 min affects: llama-3.3-70b-instruct-turbo, deepseek-v4-flash, llm-agents

¿Qué es esto?

El 28 de mayo de 2026, Nima Dorzhiev y Peng Liu publicaron Strengthening Polymorphic Prompt Assembling: Dynamic Separator Generation Against Emerging Prompt Injection Attacks (arXiv:2605.30534). Es un artículo defensivo breve —cinco páginas— que corrige una debilidad de una defensa existente contra la inyección de prompts, en lugar de anunciar un nuevo ataque.

La defensa en cuestión es Polymorphic Prompt Assembling (PPA), presentada en arXiv:2506.05739 en junio de 2025. La idea del PPA es sencilla: la inyección de prompts suele exigir que el atacante adivine y rompa la estructura que separa las instrucciones de sistema confiables de la entrada de usuario no confiable. Si se aleatoriza esa estructura, el atacante ya no puede predecir de forma fiable dónde está la frontera. El PPA toma pares de separadores de un conjunto fijo en el momento del ensamblado, con un coste de ejecución casi nulo. El artículo de mayo de 2026 identifica lo que ese conjunto fijo deja escapar, y lo cierra.

Cómo funciona

El fallo que aborda el nuevo artículo es el radio de impacto (blast radius). En el PPA original, los separadores se extraen de un conjunto estático. Los conjuntos son finitos, y los separadores pueden filtrarse: un payload inyectado que logra reflejar el delimitador actual lo revela. Una vez conocido un separador, puede reutilizarse contra cualquier petición futura que tome el mismo par. Una sola filtración compromete muchas peticiones.

La corrección consiste en dejar de reutilizar separadores por completo. En lugar de muestrear de un conjunto, la defensa deriva un delimitador nuevo para cada petición a partir de un resumen SHA-256 con separación de dominio, basado en tres entradas:

separator = H( domain_tag || timestamp || session_id || nonce )
                    │            │            │           │
        evita colisiones de      entropía por      impredecible
        resumen entre contextos  petición          en cada llamada

Cada prompt ensamblado recibe un par canario (BEGIN, END) único. Como el par nunca se reutiliza, un separador filtrado solo expone la única petición a la que pertenecía: el radio de impacto pasa de «muchas peticiones futuras» a «una». La construcción es determinista a partir de sus entradas (de modo que el harness puede seguir reconociendo sus propios delimitadores al analizar la salida del modelo) pero impredecible para un atacante que carezca del nonce.

Las cifras reportadas, evaluadas en Llama-3.3-70B-Instruct-Turbo con validación cruzada en DeepSeek-V4-Flash:

  • Contra el payload de ofuscación «M1» (leetspeak más enmarcado de urgencia), el modo dinámico redujo la tasa de éxito del ataque de 0,88 a 0,38 —una reducción de 2,3× que los autores reportan como estadísticamente significativa mediante intervalos de confianza de Wilson al 95 % no solapados.
  • Contra un payload format_breakout_salad, la tasa de filtración de separadores estáticos (0,467) cayó a 0,000 en modo dinámico, confirmando empíricamente el argumento del radio de impacto.
  • El sobrecoste es de 2,7 microsegundos de ensamblado de prompt por petición, sin fine-tuning del modelo, y el cambio es retrocompatible con el SDK de PPA existente.

Conviene señalar el techo, expuesto con honestidad: una tasa de 0,38 es una gran mejora, no inmunidad. La aleatorización estructural eleva el coste de la inyección; no la elimina.

Por qué importa

La inyección de prompts sigue encabezando el Top 10 de OWASP para aplicaciones LLM (LLM01), y la mayoría de las barreras en producción caen en dos campos: clasificadores pesados basados en modelos que añaden latencia y aun así fallan ante formulaciones nuevas, o filtros de cadenas frágiles. El PPA pertenece a una tercera categoría: una defensa estructural de bajo coste que no depende de reconocer el contenido de un ataque, sino solo de privar al atacante del conocimiento de la disposición del prompt.

El resultado sobre separadores dinámicos importa porque demuestra que esta categoría tiene una palanca de ingeniería clara. Pasar de un conjunto estático a una derivación por petición es un cambio de código pequeño, con una ganancia de seguridad medible y reproducible, a un coste de escala de microsegundos. Para los equipos que ya ensamblan sus prompts a partir de plantillas, es el tipo de mitigación que se despliega en una tarde y no en un trimestre, y que se compone con los clasificadores y el aislamiento de capacidades, sin sustituirlos.

Defensas

Si desarrolla aplicaciones LLM y quiere aplicar la lección:

  1. Trate la frontera del prompt como un secreto, por petición. Sea cual sea el esquema que use para separar las instrucciones de sistema de la entrada no confiable, no reutilice un conjunto fijo de delimitadores. Derívelos por petición a partir de material impredecible (un nonce, más sesión y marca de tiempo), de modo que una sola filtración no pueda reproducirse.
  2. Use separación de dominio en la derivación. Una etiqueta de dominio en la entrada del hash impide que un separador generado para un contexto sea válido en otro: la misma higiene que la derivación de claves criptográficas.
  3. Mantenga los delimitadores fuera de las rutas de reflexión visibles para el modelo. Elimine o neutralice cualquier eco de los separadores actuales en las salidas de herramientas y respuestas del modelo antes de que vuelvan a entrar en un prompt, para reducir de entrada la superficie de filtración.
  4. Superponga, no sustituya. La aleatorización estructural es un multiplicador de fuerza, no una garantía: una tasa residual de 0,38 sigue siendo real. Combínela con el filtrado de entrada/salida, alcances de herramientas de mínimo privilegio y la disciplina de la «tríada letal»: no conceder a un componente que procesa entradas no confiables a la vez acceso a datos privados y un canal de exfiltración.
  5. Mida con intervalos de confianza. El uso por el artículo de intervalos de Wilson en lugar de porcentajes brutos es un buen hábito. Cuando pruebe una barrera en A/B, reporte la incertidumbre para que un movimiento ruidoso de 5 puntos no se confunda con un efecto real.

Estado

ElementoReferenciaFechaNotas
Polymorphic Prompt Assembling (PPA)arXiv:2506.057392025-06Defensa original; conjunto de separadores estático
Generación de separadores dinámicosarXiv:2605.305342026-05-28Separadores SHA-256 por petición; corrige el radio de impacto
Modelos de evaluaciónsegún el artículo2026-05Llama-3.3-70B-Instruct-Turbo; DeepSeek-V4-Flash (cruzado)
Efecto reportadosegún el artículo2026-05Payload M1: 0,88 → 0,38; tasa de filtración 0,467 → 0,000
Sobrecostesegún el artículo2026-05~2,7 µs/petición; sin fine-tuning; SDK retrocompatible

La conclusión no es «la inyección de prompts está resuelta». Es que una defensa estructural conocida tenía un fallo de secreto reutilizado, alguien lo corrigió con una derivación por petición, y las cifras publicadas dicen que la corrección es barata y medible. Es exactamente el tipo de refuerzo incremental por el que los defensores deberían leer la literatura.

Sources