Esta página hace seguimiento de los modelos formales de seguridad de OpenClaw (TLA+/TLC hoy; más según sea necesario).Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Nota: algunos enlaces antiguos pueden referirse al nombre anterior del proyecto.Objetivo (guía principal): proporcionar un argumento verificado por máquina de que OpenClaw aplica su política de seguridad prevista (autorización, aislamiento de sesiones, control de herramientas y seguridad ante configuraciones incorrectas), bajo supuestos explícitos. Qué es esto (hoy): un conjunto de regresión de seguridad ejecutable e impulsado por atacantes:
- Cada afirmación tiene una verificación de modelo ejecutable sobre un espacio de estados finito.
- Muchas afirmaciones tienen un modelo negativo emparejado que produce una traza de contraejemplo para una clase de error realista.
Dónde viven los modelos
Los modelos se mantienen en un repositorio independiente: vignesh07/openclaw-formal-models.Advertencias importantes
- Estos son modelos, no la implementación completa en TypeScript. Es posible que haya divergencias entre el modelo y el código.
- Los resultados están limitados por el espacio de estados explorado por TLC; “verde” no implica seguridad más allá de los supuestos y límites modelados.
- Algunas afirmaciones dependen de supuestos ambientales explícitos (por ejemplo, despliegue correcto, entradas de configuración correctas).
Reproducir los resultados
Hoy, los resultados se reproducen clonando localmente el repositorio de modelos y ejecutando TLC (ver abajo). Una iteración futura podría ofrecer:- modelos ejecutados en CI con artefactos públicos (trazas de contraejemplo, registros de ejecución)
- un flujo de trabajo alojado de “ejecutar este modelo” para comprobaciones pequeñas y acotadas
Exposición del Gateway y configuración incorrecta de Gateway abierto
Afirmación: enlazarse más allá de loopback sin autenticación puede hacer posible el compromiso remoto / aumenta la exposición; token/contraseña bloquea atacantes no autenticados (según los supuestos del modelo).- Ejecuciones verdes:
make gateway-exposure-v2make gateway-exposure-v2-protected
- Rojas (esperadas):
make gateway-exposure-v2-negative
docs/gateway-exposure-matrix.md en el repositorio de modelos.
Canalización de exec de Node (capacidad de mayor riesgo)
Afirmación:exec host=node requiere (a) una lista de comandos Node permitidos más comandos declarados y (b) aprobación en vivo cuando está configurado; las aprobaciones se tokenizan para evitar la reproducción (en el modelo).
- Ejecuciones verdes:
make nodes-pipelinemake approvals-token
- Rojas (esperadas):
make nodes-pipeline-negativemake approvals-token-negative
Almacén de emparejamiento (control de DM)
Afirmación: las solicitudes de emparejamiento respetan el TTL y los límites de solicitudes pendientes.- Ejecuciones verdes:
make pairingmake pairing-cap
- Rojas (esperadas):
make pairing-negativemake pairing-cap-negative
Control de entrada (menciones + omisión por comando de control)
Afirmación: en contextos de grupo que requieren mención, un “comando de control” no autorizado no puede omitir el control de menciones.- Verde:
make ingress-gating
- Roja (esperada):
make ingress-gating-negative
Aislamiento de enrutamiento/clave de sesión
Afirmación: los DM de pares distintos no se colapsan en la misma sesión salvo que estén vinculados/configurados explícitamente.- Verde:
make routing-isolation
- Roja (esperada):
make routing-isolation-negative
v1++: modelos acotados adicionales (concurrencia, reintentos, corrección de trazas)
Estos son modelos posteriores que refuerzan la fidelidad en torno a modos de fallo del mundo real (actualizaciones no atómicas, reintentos y distribución de mensajes).Concurrencia / idempotencia del almacén de emparejamiento
Afirmación: un almacén de emparejamiento debería aplicarMaxPending y la idempotencia incluso bajo intercalados (es decir, “comprobar y luego escribir” debe ser atómico / bloqueado; la actualización no debería crear duplicados).
Qué significa:
-
Bajo solicitudes concurrentes, no puedes superar
MaxPendingpara un canal. -
Las solicitudes/actualizaciones repetidas para el mismo
(channel, sender)no deberían crear filas pendientes vivas duplicadas. -
Ejecuciones verdes:
make pairing-race(comprobación de límite atómica/bloqueada)make pairing-idempotencymake pairing-refreshmake pairing-refresh-race
-
Rojas (esperadas):
make pairing-race-negative(carrera de límite no atómica begin/commit)make pairing-idempotency-negativemake pairing-refresh-negativemake pairing-refresh-race-negative
Correlación de trazas de entrada / idempotencia
Afirmación: la ingesta debería preservar la correlación de trazas durante la distribución y ser idempotente bajo reintentos del proveedor. Qué significa:- Cuando un evento externo se convierte en varios mensajes internos, cada parte mantiene la misma identidad de traza/evento.
- Los reintentos no provocan procesamiento doble.
- Si faltan los IDs de eventos del proveedor, la deduplicación recurre a una clave segura (por ejemplo, ID de traza) para evitar descartar eventos distintos.
-
Verde:
make ingress-tracemake ingress-trace2make ingress-idempotencymake ingress-dedupe-fallback
-
Rojas (esperadas):
make ingress-trace-negativemake ingress-trace2-negativemake ingress-idempotency-negativemake ingress-dedupe-fallback-negative
Precedencia de dmScope de enrutamiento + identityLinks
Afirmación: el enrutamiento debe mantener aisladas las sesiones de DM de forma predeterminada, y solo colapsar sesiones cuando se configura explícitamente (precedencia de canal + enlaces de identidad). Qué significa:- Las anulaciones de dmScope específicas del canal deben prevalecer sobre los valores predeterminados globales.
- identityLinks debería colapsar solo dentro de grupos vinculados explícitos, no entre pares no relacionados.
-
Verde:
make routing-precedencemake routing-identitylinks
-
Rojas (esperadas):
make routing-precedence-negativemake routing-identitylinks-negative