Deze pagina houdt OpenClaw’s formele beveiligingsmodellen bij (vandaag TLA+/TLC; meer waar nodig).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.
Opmerking: sommige oudere links kunnen verwijzen naar de vorige projectnaam.Doel (leidster): een machinaal gecontroleerd argument leveren dat OpenClaw zijn beoogde beveiligingsbeleid afdwingt (autorisatie, sessie-isolatie, toolafscherming en veiligheid bij verkeerde configuratie), onder expliciete aannames. Wat dit is (vandaag): een uitvoerbare, door aanvallers gestuurde regressiesuite voor beveiliging:
- Elke claim heeft een uitvoerbare modelcontrole over een eindige toestandsruimte.
- Veel claims hebben een gekoppeld negatief model dat een tegenvoorbeeldtrace produceert voor een realistische bugklasse.
Waar de modellen staan
Modellen worden onderhouden in een aparte repo: vignesh07/openclaw-formal-models.Belangrijke kanttekeningen
- Dit zijn modellen, niet de volledige TypeScript-implementatie. Afwijking tussen model en code is mogelijk.
- Resultaten worden begrensd door de toestandsruimte die door TLC is onderzocht; “groen” impliceert geen beveiliging buiten de gemodelleerde aannames en grenzen.
- Sommige claims steunen op expliciete omgevingsaannames (bijv. correcte uitrol, correcte configuratie-invoer).
Resultaten reproduceren
Vandaag worden resultaten gereproduceerd door de modellenrepo lokaal te klonen en TLC uit te voeren (zie hieronder). Een toekomstige iteratie zou kunnen bieden:- door CI uitgevoerde modellen met openbare artefacten (tegenvoorbeeldtraces, runlogs)
- een gehoste workflow “dit model uitvoeren” voor kleine, begrensde controles
Gateway-blootstelling en verkeerde configuratie van open Gateway
Claim: binden buiten loopback zonder auth kan externe compromittering mogelijk maken / vergroot de blootstelling; token/wachtwoord blokkeert niet-geauthenticeerde aanvallers (volgens de modelaannames).- Groene runs:
make gateway-exposure-v2make gateway-exposure-v2-protected
- Rood (verwacht):
make gateway-exposure-v2-negative
docs/gateway-exposure-matrix.md in de modellenrepo.
Node exec-pijplijn (capaciteit met het hoogste risico)
Claim:exec host=node vereist (a) een allowlist voor Node-opdrachten plus gedeclareerde opdrachten en (b) live goedkeuring wanneer geconfigureerd; goedkeuringen worden getokeniseerd om herhaling te voorkomen (in het model).
- Groene runs:
make nodes-pipelinemake approvals-token
- Rood (verwacht):
make nodes-pipeline-negativemake approvals-token-negative
Koppelingsopslag (DM-afscherming)
Claim: koppelingsverzoeken respecteren TTL en limieten voor wachtende verzoeken.- Groene runs:
make pairingmake pairing-cap
- Rood (verwacht):
make pairing-negativemake pairing-cap-negative
Inkomende afscherming (vermeldingen + omzeiling van besturingsopdrachten)
Claim: in groepscontexten die een vermelding vereisen, kan een onbevoegde “besturingsopdracht” de vermeldingsafscherming niet omzeilen.- Groen:
make ingress-gating
- Rood (verwacht):
make ingress-gating-negative
Routerings-/sessiesleutelisolatie
Claim: DM’s van verschillende peers worden niet samengevoegd tot dezelfde sessie, tenzij ze expliciet gekoppeld/geconfigureerd zijn.- Groen:
make routing-isolation
- Rood (verwacht):
make routing-isolation-negative
v1++: aanvullende begrensde modellen (gelijktijdigheid, nieuwe pogingen, tracecorrectheid)
Dit zijn vervolgmodellen die de getrouwheid aanscherpen rond foutmodi uit de praktijk (niet-atomaire updates, nieuwe pogingen en bericht-fan-out).Gelijktijdigheid / idempotentie van koppelingsopslag
Claim: een koppelingsopslag moetMaxPending en idempotentie afdwingen, zelfs onder interleavings (d.w.z. “controleren-dan-schrijven” moet atomair / vergrendeld zijn; verversen mag geen duplicaten aanmaken).
Wat dit betekent:
-
Bij gelijktijdige verzoeken kun je
MaxPendingvoor een kanaal niet overschrijden. -
Herhaalde verzoeken/verversingen voor dezelfde
(channel, sender)mogen geen dubbele live wachtende rijen aanmaken. -
Groene runs:
make pairing-race(atomaire/vergrendelde limietcontrole)make pairing-idempotencymake pairing-refreshmake pairing-refresh-race
-
Rood (verwacht):
make pairing-race-negative(niet-atomaire begin/commit-limietrace)make pairing-idempotency-negativemake pairing-refresh-negativemake pairing-refresh-race-negative
Correlatie / idempotentie van inkomende traces
Claim: ingestie moet tracecorrelatie over fan-out heen behouden en idempotent zijn bij nieuwe pogingen door providers. Wat dit betekent:- Wanneer één externe gebeurtenis meerdere interne berichten wordt, behoudt elk onderdeel dezelfde trace-/gebeurtenisidentiteit.
- Nieuwe pogingen leiden niet tot dubbele verwerking.
- Als provider-gebeurtenis-ID’s ontbreken, valt deduplicatie terug op een veilige sleutel (bijv. trace-ID) om te voorkomen dat verschillende gebeurtenissen worden verwijderd.
-
Groen:
make ingress-tracemake ingress-trace2make ingress-idempotencymake ingress-dedupe-fallback
-
Rood (verwacht):
make ingress-trace-negativemake ingress-trace2-negativemake ingress-idempotency-negativemake ingress-dedupe-fallback-negative
Routeringsvoorrang voor dmScope + identityLinks
Claim: routering moet DM-sessies standaard geïsoleerd houden en sessies alleen samenvoegen wanneer dit expliciet is geconfigureerd (kanaalvoorrang + identiteitslinks). Wat dit betekent:- Kanaalspecifieke dmScope-overschrijvingen moeten voorrang hebben op globale standaardwaarden.
- identityLinks mogen alleen samenvoegen binnen expliciet gekoppelde groepen, niet tussen niet-gerelateerde peers.
-
Groen:
make routing-precedencemake routing-identitylinks
-
Rood (verwacht):
make routing-precedence-negativemake routing-identitylinks-negative