Parte 3 de la serie: En la Parte 1 auditamos el setup inicial de OpenClaw en AWS Lightsail — kernel desactualizado, la combinación gateway + allow como attack chain crítico, y el Gateway Token expuesto en texto claro. En la Parte 2 profundizamos en el dashboard completo — channels, agents, cron jobs, logs y paneles de configuración. Si no leíste las partes anteriores, el índice completo está al final de este post.

Nota sobre los findings: Los vectores #7, #8 y #10 identificados en la Parte 2 están pendientes de validación en vivo. El mapeo contra frameworks en este post confirma que el vector existe y tiene precedente documentado en sistemas similares — no que fue ejecutado en esta implementación específica de OpenClaw. La validación en entorno controlado va en la Parte 4.

Referencias utilizadas en este post:

El punto de partida

En las dos primeras partes de esta serie auditamos OpenClaw desplegado sobre AWS Lightsail — no como usuario, sino como Cloud Security Engineer con el objetivo de mapear la superficie de ataque que abre ese deployment.

El resultado fue una lista de 13 findings distribuidos en tres capas que no siempre aparecen juntas en el mismo análisis:

Capa IaaS — lo que Lightsail trae por defecto y el operador hereda sin necesariamente saberlo:
#FindingSeveridad
1Blueprint con kernel y librerías desactualizadasAlta
4IPv6 habilitado por defectoMedia
5Apache2 sin hardening documentadoMedia
Capa Aplicación — lo que OpenClaw expone como sistema, independiente de dónde corra:
#FindingSeveridad
3Gateway Token en texto claro en el dashboardAlta
6Sin control de acceso granular en canalesAlta
7Indirect prompt injection via canales externosCrítica
8Memory poisoning via contexto no validadoAlta
953 skills activas por defecto — modelo opt-outAlta
10Ausencia de modelo de herencia de permisos en cadenas de agentesAlta
13Config y Debug expuestos via Gateway TokenMedia
Capa Intersección — donde la configuración del operador activa vectores que ningún framework de aplicación anticipa solo:
#FindingSeveridad
2exec_host_policy: gateway + shell_approval: allow = sin aislamientoCrítica
11Cron Jobs como vector de persistencia y defense evasionAlta
12Logs locales sin exportación externaAlta

Estas tres capas no son un accidente de diseño — son el resultado de una decisión de deploy. Alguien vio el blueprint de OpenClaw en Lightsail, hizo click, y heredó una superficie de ataque que ningún threat model de aplicación contempla en su totalidad, porque ninguno fue diseñado para hacerlo.

La pregunta que responde este post es: ¿qué cubre cada framework de seguridad existente, dónde mapean estos 13 findings, y qué queda sin hogar?

MITRE ATLAS — el threat model oficial de OpenClaw

MITRE ATLAS (Adversarial Threat Landscape for AI Systems) es el framework de referencia para modelar amenazas contra sistemas de inteligencia artificial. Funciona con la misma lógica que MITRE ATT&CK — tácticas, técnicas y procedimientos — pero aplicado al ecosistema de ML y AI.

El equipo de OpenClaw lo adoptó como base para su threat model oficial, disponible en trust.openclaw.ai/threatmodel. El resultado es una matriz de 37 amenazas distribuidas en 8 tácticas, con 6 clasificadas como críticas.

Antes de mapear los findings, hay algo importante que entender sobre el scope de este threat model: fue diseñado para modelar amenazas contra OpenClaw como sistema — sus skills, su gateway, su modelo de ejecución, sus canales. No fue diseñado para modelar lo que pasa cuando alguien despliega OpenClaw sobre una VPS de Lightsail con un kernel desactualizado. Esa distinción no es una crítica — es el scope correcto para un threat model de aplicación.

Con eso en mente, el mapeo:

Lo que ATLAS anticipó — y coincide con los findings

FindingAmenaza ATLASTáctica
#7 Indirect prompt injectionT-EXEC-002 Indirect Prompt InjectionExecution
#8 Memory poisoningT-PERSIST-005 Prompt Injection Memory PoisoningPersistence
#9 53 skills opt-outT-ACCESS-004 Malicious Skill as Entry PointInitial Access
#11 Cron Jobs persistenciaT-EVADE-004 Staged Payload DeliveryDefense Evasion
#13 Config/Debug expuestosT-DISC-002/003/004 Session/Prompt/Env EnumerationDiscovery
#3 Gateway TokenT-ACCESS-003 Token TheftInitial Access

Estos findings tienen hogar en ATLAS. El framework los anticipó, les asignó una técnica, y los ubicó en una cadena de ataque.

Lo que ATLAS no cubre — y por qué

FindingPor qué queda fuera
#1 Kernel desactualizadoInfraestructura del operador — fuera de scope por diseño
#4 IPv6 habilitadoConfiguración de red del operador — fuera de scope por diseño
#5 Apache2 sin hardeningResponsabilidad del operador — fuera de scope por diseño
#2 exec_host_policy + allowIntersección entre configuración del operador y diseño de la aplicación
#6 Sin acceso en canalesATLAS documenta AllowFrom como trust boundary, pero no modela el gap cuando ese control no se configura
#10 Herencia de permisosNo existe ninguna amenaza que modele privilege escalation entre agentes con configs distintas
#12 Logs localesCompletamente ausente del threat model
El hallazgo más interesante del mapeo: Finding #2 es el que mejor ilustra la brecha entre threat model de aplicación y realidad del deploy. OpenClaw documenta exec_host_policy como una configuración que el operador controla. ATLAS modela T-EXEC-004 Exec Approval Bypass como amenaza. Pero ninguno de los dos modela explícitamente lo que pasa cuando el operador activa la combinación más permisiva por defecto — que es exactamente lo que hace el blueprint de Lightsail.

El threat model asume que el operador toma decisiones informadas. El blueprint asume que el operador quiere simplicidad. La intersección de esas dos suposiciones es Finding #2.

OWASP Top 10 for Agentic Applications 2026

En diciembre de 2025, OWASP publicó el primer framework de seguridad específico para aplicaciones agénticas. No es una extensión del Top 10 para LLMs — es una lista independiente, construida reconociendo que los agentes autónomos tienen un modelo de amenaza fundamentalmente distinto al de un chatbot.

La diferencia central: un LLM que falla produce una respuesta incorrecta. Un agente que falla ejecuta acciones incorrectas sobre sistemas reales.

Las 10 categorías del framework son:

#Categoría
AG01Prompt Injection
AG02Memory Poisoning
AG03Tool Misuse
AG04Privilege Escalation
AG05Unsafe Agent Chaining
AG06Resource Exhaustion
AG07Data Exfiltration
AG08Uncontrolled Agent Spawning
AG09Over-Permissioned Agents
AG10Excessive Trust of Agent Output

El mapeo con los findings

FindingCategoría OWASPObservación
#7 Indirect prompt injectionAG01 Prompt InjectionCobertura directa — OWASP distingue prompt injection directa e indirecta
#8 Memory poisoningAG02 Memory PoisoningCobertura directa — y en OpenClaw la memoria son archivos Markdown en disco, lo que amplifica el vector
#9 53 skills opt-outAG03 Tool Misuse + AG09 Over-Permissioned AgentsDoble mapeo — el modelo opt-out invierte el principio de least privilege
#10 Herencia de permisosAG04 Privilege Escalation + AG05 Unsafe Agent ChainingDoble mapeo — la ausencia de documentación sobre herencia de permisos es exactamente AG05
#11 Cron JobsAG08 Uncontrolled Agent SpawningParcial — los Cron Jobs no generan agentes nuevos, pero crean ejecuciones autónomas no supervisadas con el mismo efecto
#6 Sin acceso en canalesAG09 Over-Permissioned AgentsEl canal sin control de acceso es equivalente a un agente con permisos excesivos sobre su superficie de input
#2 exec_host_policy + allowAG03 Tool MisuseParcial — OWASP modela el abuso de tools, pero no la configuración de deploy que elimina el sandbox

Lo que OWASP no cubre

FindingPor qué queda fuera
#1 Kernel desactualizadoInfraestructura — fuera de scope por diseño
#4 IPv6Infraestructura — fuera de scope por diseño
#5 Apache2Infraestructura — fuera de scope por diseño
#12 Logs localesOWASP no tiene una categoría de observabilidad — la ausencia de logging externo no tiene hogar
#13 Config/Debug expuestosOWASP lo toca tangencialmente en AG07 (exfiltración) pero no modela la exposición de paneles internos via token compartido
El hallazgo más revelador del mapeo con OWASP:

Finding #9 mapea simultáneamente con AG03 y AG09 — Tool Misuse y Over-Permissioned Agents. Eso no es una coincidencia editorial. Es la consecuencia directa del modelo opt-out: cuando todo está habilitado por defecto, cada skill innecesaria activa es simultáneamente un permiso excesivo y una superficie de abuso potencial.

OWASP lo anticipó conceptualmente. Lo que no anticipó es que un sistema real y popular lo implementaría al revés — no "habilita lo que necesitas" sino "deshabilita lo que no quieres". La diferencia es filosófica pero las consecuencias son operacionales.

AWS Agentic AI Security Scoping Matrix

AWS publicó dos frameworks complementarios que conviven y se referencian mutuamente.

El primero es la Generative AI Security Scoping Matrix — 5 scopes basados en cuánto ownership tiene la organización sobre el modelo. OpenClaw en Lightsail cae en Scope 3: se construye una aplicación propia usando un modelo pre-entrenado vía API. No se entrena el modelo, no se fine-tunea — se invoca. Las responsabilidades de seguridad en Scope 3 se dividen entre AWS (el modelo, la infraestructura de Bedrock) y el operador (la aplicación, la integración, los datos que se le pasan).

El segundo es la Agentic AI Security Scoping Matrix — publicada en noviembre de 2025, específicamente diseñada para sistemas autónomos. Categoriza cuatro scopes basados en dos dimensiones: nivel de agencia (qué acciones puede tomar el sistema) y nivel de autonomía (cuánta supervisión humana existe).

Esta segunda matriz es la que habla más directamente con los findings de esta serie.

¿En qué scope opera OpenClaw con la configuración auditada?

La configuración default del blueprint de Lightsail — exec_host_policy: gateway + shell_approval: allow — ubica a OpenClaw en Scope 4: Full Agency.

La definición de AWS para Scope 4 es clara: sistemas que se auto-inician, operan continuamente con mínima supervisión humana, y pueden ejecutar workflows complejos de forma autónoma. Los Cron Jobs de OpenClaw son exactamente esto — tareas programadas que ejecutan sin intervención del operador.

El problema no es que Scope 4 exista. El problema es que Scope 4 requiere los controles más sofisticados del framework — monitoreo continuo de comportamiento, circuit breakers automáticos, mecanismos de rollback garantizado, detección de anomalías en tiempo real. Y el blueprint de Lightsail no configura ninguno de ellos.

Es el mismo patrón identificado con MITRE ATLAS: el sistema llega configurado para operar con máxima autonomía, pero sin los controles que esa autonomía requiere.

El mapeo con las 6 dimensiones de seguridad

La Agentic AI Security Scoping Matrix organiza los controles en seis dimensiones. Aquí es donde los findings encuentran su lugar más preciso:

Identity Context — gestión de identidad de usuarios, servicios y agentes.
FindingObservación
#3 Gateway Token en texto claroEl token es el único mecanismo de autenticación del gateway — sin rotación, sin scope, sin expiración
#6 Sin acceso granular en canalesEl framework requiere autenticación apropiada por nivel de scope. En Scope 4, cualquier participante del canal puede instruir al agente
Data, Memory & State Protection — seguridad de memoria persistente y prevención de memory poisoning.
FindingObservación
#8 Memory poisoningAWS nombra explícitamente memory poisoning como vector crítico en esta dimensión. En OpenClaw la memoria son archivos Markdown en disco — sin validación de integridad, sin cifrado

Este es el finding con la cobertura más directa de toda la matriz. AWS lo anticipó, lo nombró, y describió exactamente el riesgo. La implementación de OpenClaw lo materializa.

Audit & Logging — trazabilidad completa de acciones y cadenas de razonamiento.
FindingObservación
#12 Logs locales sin exportaciónEl framework exige logs resistentes a manipulación, especialmente en Scope 4. Logs locales modificables son lo opuesto de lo que Scope 4 requiere
#11 Cron Jobs como persistenciaSin logging externo, una tarea maliciosa puede ejecutar y borrar su rastro antes de que alguien lo detecte
Agent & LLM Controls — guardrails, monitoreo de comportamiento, sandboxing.
FindingObservación
#2 exec_host_policy + allowElimina el sandbox. El framework requiere containerización y resource quotas en Scope 4 — la configuración default hace exactamente lo contrario
#7 Indirect prompt injectionEl framework menciona behavioral monitoring como control. Sin él, una inyección indirecta puede ejecutar sin detección
Agency Perimeters & Policies — límites operacionales y evaluación dinámica de restricciones.
FindingObservación
#9 53 skills opt-outEl framework es explícito: los agentes deben operar dentro de los límites de su propósito diseñado. 53 skills activas por defecto es lo opuesto — máxima superficie, mínima restricción
#10 Herencia de permisosEl framework no especifica cómo deben propagarse los permisos en cadenas de agentes — ese gap es el Finding #10
Orchestration — coordinación entre agentes, acceso a tools, control de flujo de ejecución.
FindingObservación
#10 Herencia de permisosLa dimensión de Orchestration habla de inter-agent coordination protocols, pero no define el modelo de herencia de permisos en delegación
#11 Cron JobsEl framework menciona transaction management y rollback mechanisms — los Cron Jobs no tienen ninguno de los dos

Lo que la matriz no cubre

La Agentic AI Security Scoping Matrix asume implícitamente que el deployment se realiza sobre servicios managed de AWS — Bedrock, AgentCore, Lambda. No dice una sola palabra sobre qué pasa cuando el blueprint viene con kernel desactualizado, Apache sin hardening, o IPv6 habilitado por defecto.

Eso no es una crítica al framework — es su scope correcto. AWS diseñó esta matriz para la capa de aplicación y orquestación, no para la capa IaaS. El operador que elige Lightsail hereda una capa de responsabilidades que ninguna de las dos matrices contempla.

Esa capa es territorio sin mapa.

El gap — lo que ningún framework anticipó

Tres frameworks revisados. Uno diseñado por el propio equipo de OpenClaw, uno por OWASP, uno por AWS. Los tres hacen bien su trabajo. Y los tres dejan el mismo territorio sin cubrir.

Antes de nombrarlo, vale la pena ver el patrón:

FindingMITRE ATLASOWASP AgenticAWS Scoping Matrix
#1 Kernel desactualizado❌ fuera de scope❌ fuera de scope❌ fuera de scope
#2 exec_host_policy + allow⚠️ parcial⚠️ parcial⚠️ parcial
#3 Gateway Token✅ T-ACCESS-003⚠️ tangencial✅ Identity Context
#4 IPv6❌ fuera de scope❌ fuera de scope❌ fuera de scope
#5 Apache2❌ fuera de scope❌ fuera de scope❌ fuera de scope
#6 Sin acceso canales⚠️ parcial✅ AG09✅ Identity Context
#7 Prompt injection✅ T-EXEC-002✅ AG01⚠️ mencionado, no resuelto
#8 Memory poisoning✅ T-PERSIST-005✅ AG02✅ Data & Memory
#9 53 skills opt-out✅ T-ACCESS-004✅ AG03+AG09✅ Agency Perimeters
#10 Herencia permisos❌ ausente✅ AG04+AG05⚠️ parcial
#11 Cron Jobs⚠️ parcial⚠️ parcial⚠️ parcial
#12 Logs locales❌ ausente❌ ausente✅ Audit & Logging
#13 Config/Debug⚠️ parcial⚠️ tangencial⚠️ tangencial

El patrón es claro. Los findings de la capa aplicación tienen hogar en al menos uno de los tres frameworks. Los findings de la capa IaaS no tienen hogar en ninguno. Y los findings de la capa intersección tienen cobertura parcial en todos — ningún framework los captura completos porque ninguno fue diseñado para ver las dos capas al mismo tiempo.

El gap tiene nombre

Lo que falta no es un finding más. Es una capa de análisis que los frameworks existentes no contemplan por diseño: la superficie de ataque que abre la decisión de deploy sobre IaaS cuando el sistema que se despliega es un agente autónomo.

Un threat model de aplicación asume que la infraestructura es responsabilidad del operador. Un framework de infraestructura asume que la aplicación que corre encima es responsabilidad del desarrollador. Ninguno modela la intersección — el punto donde la configuración del operador activa vectores que el threat model de la aplicación no anticipó, y viceversa.

Finding #2 es el ejemplo más claro: exec_host_policy: gateway + shell_approval: allow es una decisión de configuración del operador que elimina el único mecanismo de aislamiento del agente. No es un bug de OpenClaw — es una opción documentada. No es un error del operador — es el valor por defecto del blueprint. La responsabilidad está distribuida de una forma que ningún framework captura en un solo lugar.

La validación que no se esperaba

Esto no es solo una observación propia. El repositorio oficial de AWS — sample-OpenClaw-on-AWS-with-Bedrock — lo documenta explícitamente en su README:

"Plan A is soft enforcement — the LLM can theoretically be bypassed via prompt injection. Plan E catches what Plan A misses. For hard enforcement via AgentCore Gateway MCP mode, see Roadmap."

AWS, en su propio repositorio de referencia para deployar OpenClaw, reconoce que prompt injection no está resuelto y lo pone en el roadmap. No es un gap inferido — es un gap que el equipo técnico de AWS documentó mientras construía la solución.

Y prompt injection es Finding #7 — el vector crítico identificado en la Parte 2, que ninguno de los tres frameworks resuelve completamente en el contexto de un deploy sobre IaaS.

Qué significa esto para quien despliega OpenClaw hoy

Si se despliega OpenClaw en Lightsail siguiendo el blueprint oficial, se está operando un agente en Scope 4 de la AWS Agentic AI Security Scoping Matrix — máxima autonomía — sin los controles que Scope 4 requiere, sobre una infraestructura que ningún framework de seguridad agentic modela, con un vector de prompt injection que el propio equipo de AWS reconoce como trabajo pendiente.

No es que OpenClaw esté roto. No es que Lightsail sea inseguro. Es que la combinación de ambos sobre la configuración default abre una superficie de ataque que requiere un análisis que todavía no existe como framework unificado.

Eso es lo que viene.

Lo que viene

Tres frameworks analizados. Trece findings mapeados. Un gap identificado con evidencia real.

Algo importante sobre varios de los findings mapeados en este post: los findings #7, #8 y #10 están marcados como vectores de riesgo identificados pero no ejecutados en vivo. El mapeo contra frameworks confirma que el vector existe y tiene precedente documentado. La validación de que funciona en esta implementación específica viene en el Blog 4.

Y es posible que la demo revele algo que el análisis estático no mostró. Eso no es una advertencia — es el método. No se puede auditar un agente autónomo solo desde el dashboard. En algún momento hay que ver qué hace cuando algo sale mal.

El Blog 4 cierra la serie con lo que los frameworks no pueden reemplazar: evidencia en vivo. Prompt injection ejecutado en un entorno controlado, validación de los findings pendientes, y los primeros elementos de algo que no existe todavía en LATAM: un framework unificado para evaluar la postura de seguridad de un agente autónomo considerando las tres capas juntas.

No un whitepaper. No un checklist. Algo construido desde findings reales, sobre un sistema real, desplegado sobre infraestructura real.

Si llegaste hasta acá sin haber leído la Parte 1 y la Parte 2, el índice completo de la serie está aquí:

Parte 1 — Setup seguro y primeros findings de infraestructura

Parte 2 — Dashboard completo: channels, agents, cron jobs y logs

→ Parte 3 — este post

→ Parte 4 — próximamente

Sobre el autor

Gerardo Castro es AWS Security Hero y Cloud Security Engineer con foco en LATAM. Fundador y Lead Organizer del AWS Security Users Group LatAm. Cree que la mejor forma de aprender seguridad en la nube es construyendo cosas reales — no memorizando frameworks. Escribe sobre lo que construye, lo que encuentra, y lo que aprende en el camino.

⭐️ GitHub: gerardokaztro

🔗 LinkedIn: gerardokaztro

Gerardo Castro

Gerardo Castro

AWS Security Hero · Founder, AWS Security Users Group LatAm

Cloud Security Engineer con foco en LATAM. Cree que la mejor forma de aprender seguridad en la nube es construyendo cosas reales — no memorizando frameworks.

Comentarios