Attack lab
Every button runs CAIN's real decision path on a throwaway tenant with enforcement forced on (POST /fabric/try). Then tamper with the request and see what a malformed or unknown input gets you: never an allow.
13 attacks 1 controls live: nothing pre-recorded
- Pick a preset. Red ones are attacks, green ones are honest requests that must still work.
- Tamper. Choose any field and drop it, null it, change its type, upper-case it, flip one character, or add a field the product never asked for.
- Send and read the real reply, or run every preset and watch the scoreboard fill.
What each preset tests
| Preset | Route | Why it matters | |
|---|---|---|---|
| control | Honest read, brand-new agent | POST /fabric/try | A reasonable action from a principal with no trust history. Unknown trust is held for a human, not allowed. |
| attack | Prompt injection in the payload | POST /fabric/try | The risk stage screens every nested key and value; a hit on an enforcing stage blocks. |
| attack | Malformed plan | POST /fabric/try | A plan the checker cannot read is an unanswered check, and an unanswered enforcing check blocks. |
| attack | Mission escalation | POST /fabric/try | A tool outside the declared mission is refused even though the caller is authenticated. |
| attack | Consequence horizon exhausted | POST /fabric/try | The uncertainty budget for this agent is spent; more autonomy is not granted on credit. |
| attack | Governance program needs re-authorization | POST /fabric/try | A signed policy program that does not re-execute to ALLOW for exactly this call refuses it. |
| attack | Action outside its predicted bounds | POST /fabric/try | Predictions can only restrict: an action the signed prediction does not cover is refused. |
| attack | Swapped autonomy certificate | POST /fabric/try | A certificate issued for a different configuration does not transfer. |
| attack | Authority carried across domains | POST /fabric/try | Another governance domain's agreement never becomes permission here. |
| attack | Confused-deputy continuity permit | POST /fabric/try | Replica receipts for a different action or arguments do not authorize this one. |
| attack | Proofs naming two different agents | POST /fabric/try | Every declared proof must name one subject; a mixed bundle is refused. |
| attack | Scenario nobody defined | POST /fabric/try | An unknown name is an error, not the default scenario. |
| attack | Verifier call with no API key | POST /fabric/identity/passport/verify | No credential is not an anonymous yes: the route refuses before it reads the body. |
| attack | Tenant-scoped call with no tenant key | POST /fabric/trajectories/passport/verify | A tenant-scoped route with no tenant is refused, never served from a default tenant. |
Public demo routes are rate limited per address; a 429 shows as rate limited, not as a failure. Our own lab; no independent test.
FIRME AI CORPORATION · CAIN-42 is a Byzantine trust fabric. Numbers marked "our own check" were run by us, not by an independent party. Nothing on these pages is a certification.