Threat model
Attack vectors AuthR is designed to prevent, partially mitigate, or explicitly does not cover.
Trust assumptions
The AuthR threat model assumes the following trust boundaries:
- The Issuing Authority signing key (HSM-backed)
- The Author Registry (backed by HRMS)
- The Verifier implementation (audited library)
- The trust store at each resource boundary
- Individual AI agents and orchestrators
- Sub-agent implementations
- Network transport between agents and resources
- Agent runtime environments (unless TEE-attested)
- Verified digital twins (trusted only with explicit grounding)
- Third-party Issuing Authorities in federated deployments
- The human author's endpoint (protected by AuthN, not AuthR)
Threat catalog
Scope widening attack
CRITICALAuthR coversA compromised sub-agent attempts to claim permissions its parent never granted — for example, adding wire.cancel to a scope that only included wire.prepare and wire.validate.
Structural enforcement via the monotonic scope attenuation invariant (§5.3.3 inv.4). The Verifier rejects the record before it reaches the resource. The Issuing Authority also refuses to mint a widened hop at issue time.
Model swap under stable agent ID
HIGHAuthR coversAn attacker replaces the model weights or code running under a known, trusted agent SPIFFE identity. The agent identity remains the same but its behavior changes.
Actor model_manifest binds code_hash and model_hash to the record. The Verifier confirms the running attestation matches the manifest in the AuthR record. Changing the model invalidates the attestation.
Record replay attack
HIGHAuthR coversAn attacker captures a valid AuthR record and replays it at a later time to authorize a new action the original author never intended.
Records have explicit expires_at and stale_after timestamps (Invariant 2). Short TTLs (30 minutes default) limit the replay window. The correlation_id is unique per execution graph.
Intent drift
MEDIUMAuthR coversAn orchestrator re-plans mid-execution and takes an action that is technically within scope but contradicts the stated intent. OAuth OBO cannot detect this — the token still authorizes the call.
Intent is a first-class field captured at authorship time. The Verifier can check that the executing action matches the declared purpose. Drift signals surface when confidence drops below threshold.
Correlation ID collision
LOWAuthR coversTwo independent execution graphs share a correlation_id, causing audit logs to conflate unrelated chains.
Correlation IDs must be generated with sufficient entropy (at minimum 128 bits). The Issuing Authority should validate uniqueness against its registry before minting. In practice, UUID v4 or ULID provides sufficient collision resistance.
Verifier denial of service
MEDIUMAuthR coversAn attacker floods the Verifier with malformed or deeply nested chains, causing high CPU usage from repeated cryptographic verification.
The Verifier enforces max_delegation_depth from the scope constraints. Chain depth is bounded at issuance time. The Issuing Authority enforces the depth limit before minting. Malformed records fail fast on Invariant 1 before deeper checks run.
Out of scope
AuthR is deliberately narrow. The following are out of scope for v0.1 and require complementary controls: