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.
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
- 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.
- 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.
- 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.
- 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.
| Estrategia | Éxito limpio | Éxito hostil | Efectos | Malformadas | Bloqueadas |
|---|---|---|---|---|---|
| Referencia | 0 / 6 | 0 / 24 | 0 / 24 | 30 / 30 | 0 |
| Aislamiento | 0 / 6 | 0 / 24 | 5 / 24 | 25 / 30 | 0 |
| Política | 0 / 6 | 0 / 24 | 0 / 24 | 30 / 30 | 0 |
| Combinada | 0 / 6 | 0 / 24 | 0 / 24 | 25 / 30 | 5 |
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.
| Estrategia | Tiempo real | Tiempo CPU | Tokens entrada / salida | APIs pagas |
|---|---|---|---|---|
| Referencia | 7.770 s | 14.678 s | 3143 / 409 | $0 |
| Aislamiento | 6.092 s | 12.118 s | 4307 / 322 | $0 |
| Política | 6.909 s | 13.723 s | 3143 / 409 | $0 |
| Combinada | 6.162 s | 12.035 s | 4307 / 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.jsonEjecutar 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.jsonAlcance 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.
- Revisión consultada:
e6d3c2c62154ccfc5a36595ee0ed4e44484c7d66 - Revisión registrada por el experimento:
ed6cbc309e1ec9f1e7211d83743927e28ee48c97 - Fecha del informe (UTC):
- SHA-256 del corpus:
ef0d7970d9ec3cde2d3c02d6ddef34046a82aef12b8524175216d5d6f216ac65