Files
member-console/scripts/agent-runner/scope/03-exemption-coupling.md
T
cgalo5758 5829091881 Track the agent runner and its method page
The contained runner that drove the 2026-09 security audit, the README
review and four rounds of design ideation lived only inside the ignored
notebook. It moves to scripts/agent-runner/: the prepare, tools, audit,
ideation and teardown scripts, the compose and container files, the
allowlist proxy and the prompt templates, with the paths that assumed
the notebook fixed and findings written to a caller-named directory. Run
outputs, transcripts and the round-specific sheet scripts stay behind.

docs/agent-runner.md states the method: the disposable git archive
copy and the fail-closed proxy, how a task is shaped, union rather than
intersection of findings across models, separate adjudication of every
finding against the source, and the evidence a finding must carry.
2026-09-19 19:47:15 -05:00

28 lines
1.4 KiB
Markdown

# T03 — The CSRF/auth exemption coupling
**Threat model.** An unauthenticated attacker on the internet requests the
paths that are exempt from CSRF, which `CONTEXT.md` shows are also exempt from
authentication.
**Slice.** `internal/server/server.go` lines 390-420 and 540-570 and 685-690,
`internal/integrations/integration.go`, each integration's declaration
(`stripe.go`, `discourse.go`, `fedwiki.go`), the `/domains/ask` handler, and
`internal/server/route_aware_handler*.go`.
**Questions.**
1. Enumerate every currently exempt path. For each, what authenticates the
caller instead of a session, and is that check actually reached?
2. Is exemption matched exactly, or by prefix? Can a request shape a path that
matches the exemption but routes to a different handler (trailing slash,
encoded characters, path traversal, differing case, duplicate slashes)?
3. `/domains/ask` is unauthenticated by design. What can an arbitrary internet
caller learn or change through it, and is that the intended blast radius?
4. `routeAware` applies auth only to requests matching a registered pattern.
What happens to a request that matches no pattern, and can that be used to
skip middleware?
5. If an integration author adds one path to `CSRFExemptPaths`, what exactly
have they turned off? Is anything stopping them from exempting a
session-bearing browser route?
**Not in scope.** The webhook signature checks themselves (T04).