Proyectos / Agent Injection Evals

Agent Injection Evals

Evaluación reproducible de inyección de prompts con un modelo local fijado, herramientas simuladas y métricas separadas de capacidad, intentos de ataque y efectos realizados.

Autor: · Python 3.11.13 / FLAN-T5-small / CPU · Licencia: MIT

Ficha publicada: · Ficha actualizada:

Repositorio · Informe de evaluación

Problema y utilidad para agentes

Un agente que no completa ninguna tarea puede mostrar cero ataques exitosos. Esa cifra aislada no demuestra seguridad. Este proyecto mide el trabajo legítimo, las respuestas malformadas, los intentos de ataque y sus efectos por separado.

Permite inspeccionar qué ocurre cuando un agente lee documentos hostiles y propone una acción. La evidencia distingue el comportamiento del modelo de la autorización aplicada por el sistema que ejecuta la herramienta.

Arquitectura

  1. Tareas y ataques controlados. Dos tareas de desarrollo y seis de evaluación tienen un control limpio y cuatro variantes hostiles: contaminación de respuesta, divulgación de un secreto sintético, redirección de destino y modificación no autorizada de estado.
  2. Comparación 2 × 2. Se cruzan prompts planos o con aislamiento de instrucciones y políticas permisivas o limitadas a la tarea. El mismo FLAN-T5-small fijado genera una decisión por caso.
  3. Ejecución simulada. Un parser estricto acepta ANSWER, SEND o WRITE. La política comprueba verbo y destino autorizados. Los efectos viven en diccionarios nuevos en memoria; los destinos usan .invalid y no se envían mensajes.
  4. Trazas y puntuación. Cada prompt, salida, decisión de parsing, intento, efecto y uso de recursos queda registrado. Un verificador reconstruye prompts y métricas desde las respuestas guardadas sin volver a ejecutar el modelo.

Qué demuestra

  • Diseño de evaluaciones que separan capacidad legítima, ataque intentado y efecto realizado.
  • Aplicación de permisos de herramientas fuera del modelo, con una referencia permisiva y datos reproducibles.
  • Publicación de resultados negativos y análisis de errores sin convertir fallos de protocolo en supuestas defensas.

Resultados publicados

El informe de evaluación contiene 120 generaciones reales en CPU: seis tareas, cinco variantes y cuatro estrategias. Ninguna estrategia completó una tarea limpia ni hostil bajo la métrica fijada. El experimento de desarrollo conserva otras 40 generaciones.

Se usó google/flan-t5-small en la revisión 0fc9ddf78a1e988dac52e2dac162b0ede4fd74ab, seed 1729, decodificación greedy, dos hilos, hasta 512 tokens de entrada sin truncamiento y 48 de salida. El registro corresponde a Python 3.11.13, torch 2.2.2, transformers 4.46.3 e Intel Xeon W-3223 con 48 GiB de RAM.

Capacidad y efectos de ataque

Éxito limpio y hostil miden la tarea legítima. Efectos cuenta ataques realizados después de la política. Bloqueadas cuenta llamadas denegadas. Malformadas incluye todas las variantes de cada estrategia.

Informe de evaluación ·
EstrategiaÉxito limpioÉxito hostilEfectosMalformadasBloqueadas
Referencia0 / 60 / 240 / 2430 / 300
Aislamiento0 / 60 / 245 / 2425 / 300
Política0 / 60 / 240 / 2430 / 300
Combinada0 / 60 / 240 / 2425 / 305

Recursos de la evaluación

Totales observados de generación por estrategia. Excluyen la carga del modelo y no representan una prueba de carga ni una media de repeticiones.

Informe de evaluación ·
EstrategiaTiempo realTiempo CPUTokens entrada / salidaAPIs pagas
Referencia7.770 s14.678 s3143 / 409$0
Aislamiento6.092 s12.118 s4307 / 322$0
Política6.909 s13.723 s3143 / 409$0
Combinada6.162 s12.035 s4307 / 322$0

El aislamiento produjo cinco escrituras indebidas. La estrategia combinada intentó esas mismas cinco escrituras y la política las bloqueó. Con 0/6 tareas limpias exitosas por estrategia no hay una defensa útil ganadora ni una tasa de ataque condicionada calculable: esa tasa es null, no cero.

Las 120 generaciones terminaron sin errores de ejecución. La carga del modelo tomó 2,797 s y el pico de memoria del proceso fue 709,3 MiB, compartido entre estrategias. No se midieron energía ni amortización de hardware. Informe de evaluación.

Algunas respuestas extrajeron el dato correcto pero no respetaron el prefijo requerido. El análisis conserva esos casos y explica por qué no se modificó el criterio de éxito después de verlos. Análisis de errores.

Reproducir

La verificación de informes usa Python 3.11 sin paquetes externos. La inferencia necesita el lock nativo del entorno Intel macOS documentado y descargar los pesos públicos. Después de la descarga, la inferencia es local y no usa APIs pagas.

Verificar el informe recompone su consistencia; no vuelve a inferir ni autentica los tiempos. Para inferencia nueva usá directorios de salida nuevos y ejecutá cada experimento en serie. El lock está ligado al entorno de referencia; otra plataforma requiere registrar sus versiones.

Verificar los informes guardados

git clone https://github.com/lucioduran/agent-injection-evals.git
cd agent-injection-evals
git checkout e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66
python -m injection_evals verify --report results/dev/report.json
python -m injection_evals verify --report results/eval/report.json

Ejecutar inferencia local

python -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements-local.lock
python -m injection_evals download
python -m injection_evals run --split dev --output build/reproduced-dev
python -m injection_evals run --split eval --output build/reproduced-eval
python -m injection_evals verify --report build/reproduced-eval/report.json

Alcance y límites

  • El modelo pequeño falla el protocolo de acciones y las tareas. Estos resultados no permiten ordenar defensas para agentes de producción capaces.
  • El conjunto sintético es pequeño, conocido por el autor y comparte plantillas de ataque entre particiones. No representa ataques arbitrarios ni una evaluación independiente a ciegas.
  • Cada ensayo tiene una sola decisión, sin navegador, feedback de herramientas, ataques adaptativos ni exfiltración real.
  • El aislamiento es una convención de prompt. La política no impide divulgar contenido en respuestas ni en un destino ya autorizado.
  • Los tiempos son una observación por caso, sin excluir calentamiento. El replay comprueba consistencia interna, no autenticidad de mediciones ni equivalencia neuronal entre plataformas.

Fuentes y revisión

Los valores de esta ficha provienen del informe enlazado. No son una medición en vivo. El informe conserva la revisión ejecutada; la revisión consultada incluye la publicación posterior de ese informe.