Security-context discontinuity: waarom losse agent-controls nooit compositorisch failen
Nederlandse overheidsorganisaties bouwen LLM-agenten door losse security-controls aan elkaar te rijgen: een provenance-tracker, een taak-gebonden autorisatiemodule, een policy-gateway, een protocol-adapter, een effect-gebonden execution-laag. Elk onderdeel wordt apart gespecificeerd en apart getest. De aanname is stilzwijgend: als elke control op zichzelf correct is, is de compositie dat ook.
Dat klopt niet. De compositie kan falen op een manier die geen enkele individuele test ziet, en die falen heet nu security-context discontinuity.
Het fenomeen: security-context discontinuity
De kern-observatie van het CONTINUITY-paper (arXiv:2609.05269) is dat elke control werkt op een context: wie is de principal, welke taak draait er, welk veld wordt gelezen, welke delegatie is verleend, welk beleid is actueel. Die context moet van de ene control naar de volgende mee reizen. Op een componentgrens kan die context weglekken: een boundary dropt een source-label, accepteert een zelf-verklaarde autoriteitswortel, verbreedt een delegatie, wijzigt een goedgekeurd veld zonder geldige transformatierelatie, of voert een verlopen of gereplayte permit uit.
Elk van die fouten is op zichzelf een individuele zwakte. Maar CONTINUITY laat zien dat ze een gemeenschappelijke klasse vormen die individuele controles niet kunnen vangen: de security-context raakt los van de effecten die hij zou moeten begrenzen.
Vier discontinuiteits-operatoren
Het paper reduceert de foutklasse tot vier mechanismen die context op een grens kunnen breken:
- Truncatie. Een projectie q(E) laat een vereist veld weg. Als een stroomafwaartse beslissing twee toestanden onderscheidt via dat veld, worden die toestanden observationeel equivalent.
- Amplificatie. Een output bevat autoriteit, delegatieomvang of gedeclassificeerde data die de input plus een expliciete grant niet rechtvaardigt. Natuurlijke-taalafleiding is geen grant, een LLM die uit een e-mail "machtiging" concludeert creëert onbevoegde autoriteit.
- Rebinding. Een approval, release of permit wordt hergebruikt voor een andere principal, taak, bronwaarde, veld, tool, bestemming of actie.
- Staleness/replay. Een anderszins geldig object wordt gebruikt na vervaldatum, herroeping of beleidswijziging.
Deze vier operatoren zijn niet hypothetisch. Het paper organiseert er 32 fault-klassen onder, verdeeld over de domeinen root trust, provenance & release, component-topologie, semantische transformatie, beleidsversheid, finality en replay.
Het formele antwoord: end-to-end consequence integrity
CONTINUITY stelt één centrale eis centraal:
End-to-end consequence integrity (ECI): elk extern gerealiseerd effect moet een verifieerbare witness hebben die het exacte effect verbindt aan een geauthenticeerde keten-oorsprong, principal, taak, veld-niveau provenance, wortel-grant, component-contracten, geldend beleid, finality-sink en single-use execution state.
Het verschil met wat organisaties nu doen is de witness-plicht. Niet "we hebben een authorization-check", maar "elke effect-grens moet aantoonbaar de volledige context dragen tot aan de wortel-grant". Dat is een assume-guarantee-contractmodel: elke component garandeert wat het over de context doorgeeft, en veronderstelt wat de voorgaande component het reikte.
Wat de evaluatie aantoont
De referentie-implementatie (Continuity, open source) is getest over 128 fault-domeinklassen en 2.560 aanvalsinstanties: het commit geen enkel schadelijk effect, terwijl het alle benigne taken en escalaties automatisch voltooit. De ablatiestudie is het scherpst:
- Pass-through (geen contracten): effect ASR 100,0%
- Tool-allowlist alleen: effect ASR 100,0%
- Gateway + Finality samen (de sterkste onvolledige configuratie): effect ASR 65,6%
- Volledige Conformity: effect ASR 0,0%
Dat is het kernpunt: zelfs de sterkste onvolledige combinatie faalt in bijna twee derde van de gevallen. De veiligheid zit niet in de kracht van één control, maar in de volledigheid van de keten.
De formele kern: assume-guarantee-contracten
Het contractmodel drukt elke componentovergang uit als een assumptie-garantiepaar. Formeel: een component C met effectverzameling E en contextruimte Γ voldoet aan contract (A, G) wanneer geldt
∀ γ ∈ Γ : γ ∈ A ⇒ C(γ) ∈ G
waarbij A de aannames over ontvangen context zijn en G de gegarandeerde context na transitie. De compositie van C₁·C₂·…·Cₙ is veilig wanneer de garanties van elke component de aannames van de volgende impliceren:
G₁ ⊆ A₂, G₂ ⊆ A₃, …, Gₙ₋₁ ⊆ Aₙ
De verificatie van zo'n keten is formeel lineair in het aantal componenten: het aantonen van de keten-implicatie kost O(n) contract-vergelijkingsoperaties, mits de contract-semantiek zelf constant is per transitie. Dat is een belangrijk praktisch punt, de compositorische verificatie is niet computationeel duur; wat duur is, is het correct specificeren van de contracten zelf, die O(|Γ|) contextvelden per component raken.
Een uitvoerbaar voorbeeld van een effectgrens-check
De kern van de referentie-implementatie is een verifier die aantoont dat een effect voldoet aan ECI. Vereenvoudigd is de controle op een gesigneerde effect-bundel:
func VerifyEffect(bundle EffectBundle, policy Policy, root RootGrant) bool {
// 1. De effect-bundel moet een onvervalste bronketen dragen
if !bundle.Chain.Verify(root.PublicKey) {
return false // geauthenticeerde keten-oorsprong ontbreekt
}
// 2. Principal en taak moeten gebonden zijn aan de wortel-grant
if bundle.Principal != root.Principal || !policy.Allows(root, bundle.Task) {
return false // rebinding of onbevoegde principal
}
// 3. Geen veld mag zijn gewijzigd zonder geldige transformatierelatie
for _, change := range bundle.Delta {
if !policy.ValidTransformation(change.Path, change.Relation) {
return false // amplificatie of niet-gesanctioneerde wijziging
}
}
// 4. Finality: het effect moet single-use zijn (geen staleness/replay)
return finalitySink.Claim(bundle.Nonce, now) // enkelvoudige execution state
}
Dit is bewust een vereenvoudiging van de verifier in het paper, maar het toont de vier operatoren als concrete gate-condities: authenticatie, principal-binding, transformatie-validatie en finality.
Praktijkvoorbeeld: een gemeentelijke uitkeringschatbot
Neem een fictieve gemeente die een uitkeringschatbot met een RAG-pipeline en een besluit-API inzet. De keten is: prompt → policy-gateway → provenance-tracker → protocol-adapter → effect-executie. Individueel voldoen alle vier aan de BIO2-baseline (authenticatie, autorisatie, logging). Maar de compositie kan falen op een van de vier operators:
- De policy-gateway laat een "verhoogde rechten"-delegatie door die de adapter herinterpreteert als een wijziging van de lees-scope (amplificatie).
- De provenance-tracker logt de bron, maar de besluit-API onderschat welke velden de prompt daadwerkelijk aangaf (truncatie).
- Een verlopen sessietoken wordt door de adapter nog geaccepteerd omdat de finality-check ontbreekt (replay).
Een BIO2-audit die alleen per component controleert, certificeert deze keten als compliant. Een ECI-audit op keten-niveau markeert de drie gaten. Dit bouwt voort op de autoriteitsketen-analyse in Beyond Least Privilege: Authority Provenance, waar die post de verticale provenance formaliseert, dwingt CONTINUITY de horizontale context-continuïteit tussen componenten af.
Wat betekent dit voor NIS2 en BIO2?
Dit is geen academisch curiosum, het raakt rechtstreeks de aantoonbaarheidsverplichtingen die Nederlandse organisaties vanaf juni 2027 hebben.
NIS2 (Cybersecuritywet) vereist in artikel 21 risicobeheer en aantoonbare security-maatregelen. BIO2 (Baseline Informatiebeveiliging Overheid) vertaalt dat naar concrete control-baselines. Geen van beide heeft vandaag een patroon voor "compositorische beveiliging van agentarchitecturen", de baselinecontroles (authenticatie, autorisatie, logging) worden op individuele componenten getoetst. CONTINUITY toont dat een organisatie alle individuele BIO2-controles kan halen en toch een onveilige agentketen heeft, omdat de context-continuïteit tussen de controles ontbreekt.
Voor een CISO betekent dit drie concrete implicaties:
- Controle-audit op keten-niveau, niet component-niveau. De BIO2-toets "heeft u een autorisatiefunctie" is onvoldoende. De vraag wordt: "draagt elke effectgrens de volledige security-context, en is dat verifieerbaar via een witness?"
- Provenance is een bewijslast, geen telemetrie. Wie provenance alleen logt voor forensic analyse, mist het punt: provenance moet een security-controle zijn die de effect-executie begrenst, niet een achteraf-registratie.
- De LLM is geen autoriteitsbron. Amplificatie ontstaat wanneer een model uit natuurlijke taal "machtiging" afleidt. Autoriteit moet uit een geauthenticeerde wortel-grant komen, niet uit modelredenering, anders bouwt u een self-authorized agent.
Epistemische positie
Bewijsklasse: de kwantitatieve resultaten (effect ASR per configuratie) zijn OBSERVED in een gecontroleerde referentie-implementatie van de auteurs zelf.
Competing hypothesis: een alternatieve verklaring voor de gemeten veiligheid is dat de volledige conformity-configuratie vooral het gevolg is van de gecontroleerde testomgeving, niet van de contract-modellering an sich. De ablatiestudie (65,6% -> 0,0% na volledige keten) verzwakt deze hypothese maar sluit haar niet uit: de 2.560 aanvalsinstanties zijn geconstrueerd door dezelfde auteurs die de defensie bouwden, het is geen onafhankelijke evaluatie.
Falsificatie-criterium: de centrale claim "volledige ECI-referentie-implementatie commit geen schadelijk effect in de fault-suite" wordt weerlegd als een onafhankelijk team de Continuity-referentie tegen een bredere of niet-gepubliceerde fault-suite laat draaien en een effect ASR groter dan 0 meet. Wat zou dit expliciet weerleggen: een gecontroleerd experiment buiten het CONTINUITY-team dat de 128 fault-domeinklassen overschrijdt en een nonzero effect ASR waarneemt. Wie dit wil falsifiëren, kan de gepubliceerde referentie-implementatie (zast-ai/continuity) her-draaien tegen een eigen fault-suite en de effect ASR meten. Dit is een direct tegen-argument tegen de generaliseerbaarheid van de gemeten veiligheid.
Counterfactual: als organisaties wél op keten-niveau testten (assume-guarantee-audit van elke effectgrens), dan zou de false sense of security die nu uit individuele control-certificaten voortkomt, vervallen, en zouden agent-PoC's die nu veilig lijken op individuele gates, op her-certificering wachten.
Onzekerheidsklasse: het bestaan van security-context discontinuity als foutklasse is HIGH-confident (formeel gemodelleerd en gereproduceerd). De exacte incidentie in Nederlandse productiesystemen is echter UNKNOWN, er is geen meting van hoe vaak de vier operatoren nu al in de praktijk optreden.
Een nieuw inzicht dat verder gaat dan de paper
De auteurs stellen ECI voor als een formeel contractmodel. De afgeleide claim over de markt is een stap verder: voor Nederlandse overheidsorganisaties is dit niet alleen een security-controle, maar een conformiteitsbewijs dat BIO2/NIS2-audits vandaag niet kunnen leveren, een nieuw inzicht dat niet rechtstreeks uit de paper volgt maar voortkomt uit de synthese van het paper met de NL-auditpraktijk. Geen bestaande NORA- of GEMMA-pattern dekt compositorische beveiliging van agentarchitecturen. Dat is een materiële governance-blinde vlek, buiten de directe conclusie van de paper zelf. De afgeleide claim is: de vier operatoren (truncatie, amplificatie, rebinding, replay) zijn ook bruikbaar als diagnostische checklist voor bestaande BIO2-audits op agentketens, een toepassing die het paper niet zelf voorstelt maar haar resultaten wel ondersteunen.
Limitations en aandachtspunten
- Integrity is niet semantische correctheid. ECI garandeert dat het effect contextueel geauthenticeerd is, niet dat het effect zelf wijs of correct is. Een geldige grant kan een onverstandige actie autoriseren.
- De TCB is niet triviaal. De contracten, predicaat- en relatierelaties zijn versiebeheerde "security code". Wie de semantische relaties (bijv. alias-resolutie) verkeerd definieert, creëert een verifieerbaar-inkorrecte keten.
- Geen informatie-stroom-oplossing. Het paper dekt covert-kanalen en tekstuele lekkage via toegestane output niet, het is geen volledige DLP.
- In-memory simplifying assumptions. De finality-wereld, nonce-ledger en idempotency-store zijn in-memory; productievereisten (partial failure, idempotentie over procesgrenzen) zijn vereenvoudigd.
Wat nu?
Voor organisaties die LLM-agenten in productie of PoC hebben, is de eerste actie een compositorische security-assessment: breng per effectgrens in kaart welke security-context wel en niet meereist, en waar de vier operatoren (truncatie, amplificatie, rebinding, replay) op de loer liggen. Dat is een architectuuroefening die u nú kunt doen, onafhankelijk van of u het volledige contractmodel adopteert.
Primaire bron: CONTINUITY: Security-Context Contracts for Composable LLM Agent Controls · volledige PDF · referentie-implementatie op GitHub (zast-ai/continuity).
AI & Security Intelligence
Wekelijkse nieuwsbrief met AI updates, security alerts en compliance inzichten, direct in uw inbox.
Security & AI Operating Model
Advisory met executiekracht
Van BIO2 en NIS2 tot EU AI Act, embedded in uw operating model, niet als extern project. Maandelijks opzegbaar, met assessments als bewijsvoering.