vanteguardlabs/warden-chaos-catalog

GitHub: clavenar/clavenar-chaos-catalog

Stars: 0 | Forks: 0

# warden-chaos-catalog Pure-data attack catalog for Agent Warden's red-team and demo flows. Lifted out of `warden-chaos-monkey` so multiple callers can share one canonical source of truth for the canned scenarios: - **`warden-chaos-monkey`** — the CLI red-team runner. Iterates `catalog()`, POSTs each attack to the proxy, classifies the verdict against the `Expected` field on each `Attack`. - **`warden-console`** — the `/demo/fire` page (in the `vanteguardlabs` demo experience). Currently has its own HIL-pending-shaped scenarios; routing through the catalog is a future refactor. ## What's in here use warden_chaos_catalog::{ Attack, // pure data; Clone+Debug. payload_builder and // headers_builder are private — go through // build_payload(request_id) and build_headers() Category, // 9 variants: Denylist, Injection, Velocity, // BusinessHours, Control, Hil, Attestation, Identity, // SupplyChain Expected, // Allow | Deny { reason_keywords } | BusinessHoursConditional Mode, // Single | Burst { count } | SingleWithHil(HilSideAction) HilSideAction, // Deny | DoNothing catalog, // -> Vec (40 today) }; Every payload + header builder is a plain `fn` pointer (no captured state). Time-dependent values (attestation `expires_at`, JWT `exp`) are stamped at fire-time by the `build_headers()` accessor rather than at catalog construction, so a long catalog run doesn't ship stale claims. ## What's NOT in here - The runner — HTTP client, async dispatch, verdict classification. Lives in `warden-chaos-monkey/src/runner.rs` and stays there. - The identity-scenario catalog — those scenarios reference `IdentityRunner` which carries an HTTP client; lifting them into a pure-data crate would force a runner trait we don't need yet. Still in `warden-chaos-monkey/src/identity_attack.rs`. - The CLI / report formatter — binary concerns, stay in `warden-chaos-monkey`. ## Versioning + breaking changes This crate is a workspace-internal data dependency for the warden tree. Adding new scenarios is non-breaking; renaming variants of `Category` / `Expected` / `Mode` IS breaking and triggers a coordinated bump on every consumer (today: just `warden-chaos-monkey`; tomorrow probably `warden-console`). ## Run cargo build cargo test cargo clippy --all-targets -- -D warnings No binary — this is a library crate. ## License Apache-2.0.
标签:通知系统