
Código de benchmark y defensa para ataques de memoria persistente en agentes de uso informático estilo OpenClaw, con mitigación de zonificación de memoria, escenarios de ataque y scripts de evaluación.
Código experimental para ZoneClaw: Mitigating Persistent Memory Attack by Establishing Memory-Zoning among OpenClaw-Style Computer-Use Agents.
Este repositorio contiene las tareas de benchmark, las implementaciones de defensa y los scripts de evaluación utilizados en el artículo. El benchmark estudia ataques de memoria persistente entre sesiones en agentes de uso informático estilo OpenClaw. Cubre dos clases de ataque:
ZoneClaw separa las observaciones externas retenidas de la memoria con autoridad, y luego utiliza agentes con roles separados para observar, clasificar y actuar sobre la información persistente.
Esta edición de solo código no incluye los resultados experimentales. Las transcripciones del artículo, la evidencia del verificador y los resúmenes están disponibles en el repositorio de artefactos adjunto.
uvReserve al menos 20 GB de espacio libre en disco para dependencias, imágenes de Docker y ejecuciones generadas. Recomendamos 16 GB de RAM para experimentos en paralelo. La configuración inicial suele tardar entre 10 y 20 minutos, según la red y la caché de compilación de Docker.
Para una descarga anónima, extraiga el ZIP, abra una terminal en su directorio de nivel superior y ejecute:
bash setup.sh
La configuración obtiene las dependencias fijadas de OpenClaw, Harbor y WorkspaceBench directamente desde sus repositorios públicos de origen. No se necesita acceso al repositorio privado original.
Para una clonación de Git, reemplace <repository-url> a continuación con la URL de clonación del repositorio:
git clone --depth 1 --recurse-submodules --shallow-submodules \
<repository-url> ZoneClaw-code
cd ZoneClaw-code
bash setup.sh
El script valida las herramientas locales y el demonio de Docker, compila las imágenes necesarias y crea .env a partir de .env.example. Genera OPENCLAW_GATEWAY_TOKEN localmente; edite .env solo para establecer las claves de proveedor necesarias para una ejecución. No haga commit de .env.
| Experimento | Claves de API requeridas |
|---|---|
| Modelo principal de Anthropic | ANTHROPIC_API_KEY |
| Modelo principal de OpenAI | OPENAI_API_KEY |
| Modelo principal de Z.AI | ZAI_API_KEY |
| Modelo principal de Alibaba Qwen | ALIBABA_KEY |
| Watcher o MELON con un modelo principal que no sea de Anthropic | Clave del modelo principal y ANTHROPIC_API_KEY |
| Evaluaciones de autoridad y utilidad benigna de WorkspaceBench | OPENAI_API_KEY y ANTHROPIC_API_KEY |
Los experimentos realizan llamadas de pago a proveedores. Comience con un ensayo para verificar la ruta completa:
MODEL=anthropic/claude-sonnet-4-6 \
E2E=bcc-zoneclaw-userprompt N=1 P=1 bash bench.sh
Los experimentos principales del artículo utilizan Claude Sonnet 4.6. Después de que la prueba de humo tenga éxito, reproduzca la fila completa con:
MODEL=anthropic/claude-sonnet-4-6 \
E2E=bcc-zoneclaw-userprompt N=15 P=3 bash bench.sh
Las salidas se escriben en runs/<timestamp>__e2e-<experiment>/. El comando imprime un desglose por ensayo después de la agregación; una ejecución existente se puede ver de nuevo con:
bash show-bench.sh runs/<run-directory>
Los experimentos de extremo a extremo con nombre siguen:
<scenario>[-<defense>]-<setting>
| Término del artículo | Token de comando |
|---|---|
| Exfiltración de BCC | bcc |
| Duplicación de chat | chat |
| Redirección de origen | sr |
| Redirección de mercado | market |
| Actualización activada por el usuario | userprompt |
| Actualización periódica | heartbeat |
| Sin defensa | omita el token de defensa |
| Watcher estilo ClawKeeper | auditor |
| Separación de privilegios | privsep |
| ClawGuard | clawguard |
| MELON | melon |
| ZoneClaw | zoneclaw |
Ejemplos:
# Undefended BCC, user-triggered update
MODEL=anthropic/claude-sonnet-4-6 \
E2E=bcc-userprompt N=15 P=3 bash bench.sh
# ClawKeeper-style Watcher, periodic Chat Mirror update
MODEL=anthropic/claude-sonnet-4-6 \
E2E=chat-auditor-heartbeat N=15 P=3 bash bench.sh
# ZoneClaw, user-triggered source-redirection update
MODEL=anthropic/claude-sonnet-4-6 \
E2E=sr-zoneclaw-userprompt N=15 P=3 bash bench.sh
Todos los nombres válidos y sus pares de tareas de inyección/explotación se enumeran en experiments/e2e.tsv.
Para usar otro modelo compatible, reemplace MODEL; por ejemplo:
MODEL=openai/gpt-5.5 OPENCLAW_THINKING=medium \
E2E=bcc-zoneclaw-userprompt N=15 P=3 bash bench.sh
MODEL=zai/glm-5.2 \
E2E=bcc-zoneclaw-userprompt N=15 P=3 bash bench.sh
BENCH_TOKEN_PRICES_FILE="$PWD/experiments/measurement/qwen3.7-plus-2026-05-26.json" \
MODEL=alibaba/qwen3.7-plus-2026-05-26 OPENCLAW_THINKING=medium \
E2E=bcc-zoneclaw-userprompt N=15 P=3 bash bench.sh
Las ejecuciones medidas archivan el tiempo de ejecución por fase, el uso del modelo y el uso del modelo auxiliar
junto con cada ensayo. Las ejecuciones de Alibaba Qwen además conservan un registro de uso sin contenido
para que los tokens de razonamiento no se cuenten dos veces por el adaptador de compatibilidad. Consulte docs/measurement.md para el esquema y las reglas de agregación.
El artículo evalúa cada ablación en la forma activada por el usuario de los cuatro escenarios. Los comandos de BCC son:
# w/o Zone
MODEL=anthropic/claude-sonnet-4-6 \
E2E=bcc-zoneclaw-no-authority-metadata-userprompt N=15 P=3 bash bench.sh
# w/o Gatekeeper
MODEL=anthropic/claude-sonnet-4-6 \
E2E=bcc-zoneclaw-auto-promotion-userprompt N=15 P=3 bash bench.sh
# w/o Cross-check
MODEL=anthropic/claude-sonnet-4-6 \
E2E=bcc-zoneclaw-low-context-userprompt N=15 P=3 bash bench.sh
Reemplace bcc con chat, sr o market para los escenarios restantes.
for experiment in \
bcc-prompt-aware-promotion-userprompt \
bcc-zoneclaw-prompt-aware-promotion-userprompt \
bcc-prompt-aware-composed-userprompt \
bcc-zoneclaw-prompt-aware-composed-userprompt \
sr-prompt-aware-finegrained-userprompt \
sr-zoneclaw-prompt-aware-finegrained-userprompt
do
MODEL=anthropic/claude-sonnet-4-6 \
E2E="$experiment" N=15 P=3 bash bench.sh
done
MODEL=anthropic/claude-sonnet-4-6 \
TASK=bcc-exfiltration-zoneclaw-promotion/benign-only \
N=30 P=3 bash bench.sh
MODEL=anthropic/claude-sonnet-4-6 \
TASK=bcc-exfiltration-zoneclaw-promotion/malicious-only \
N=30 P=3 bash bench.sh
El artículo utiliza el calendario de ataques repetidos de BCC, diez sesiones de actualización y puntos de control después de 0, 1, 2, 3, 5 y 10 actualizaciones:
MODEL=anthropic/claude-sonnet-4-6 \
SYSTEM=no-defense SCHEDULE=repeated-attack \
N=3 P=1 bash longitudinal-bench.sh
MODEL=anthropic/claude-sonnet-4-6 \
SYSTEM=zoneclaw SCHEDULE=repeated-attack \
N=3 P=1 bash longitudinal-bench.sh
Los experimentos de WorkspaceBench requieren sus metadatos Lite y archivos de espacio de trabajo:
uv run --with huggingface_hub python \
workspace-bench/evaluation/scripts/download_hf_assets.py \
--eval-root workspace-bench/evaluation \
--language en --lite --workspaces
Después de descargar las tareas de origen, genere los dos subconjuntos disjuntos de 15 tareas del artículo con la semilla de selección fija: