* Sync agent pipeline artifacts to 0.6.0. Add model routing defaults, L2 role updates, convoy telemetry, and manifest tracking without touching unrelated in-progress work. * Record tcg-vault interactive sync (kept local L1/L3 customizations). Update last_synced_at after reviewing behind/conflict artifacts; no overwrites applied. Co-authored-by: Cursor <cursoragent@cursor.com> * chore(agent-pipeline): sync 0.6.0 — implementer Mode 2 fix pass + UI designer - role-implementer Mode 2 (fix pass) and role-reviewer hand-off - role-ui-designer + model-routing updates from upstream 783e2a3 - manifest last_synced_at bumped Co-authored-by: Cursor <cursoragent@cursor.com> * chore(agent-pipeline): sync v0.7.0 model routing Composer Standard for architect, Grok for audit fan-out, Sonnet 5 escalation path. Co-authored-by: Cursor <cursoragent@cursor.com> * chore(agent-pipeline): finish 0.6.0/0.7.0 sync on branch Install security baseline, convoy planning, security-audit and ui-ux-pro-max skills; align PR template and metrics docs with convoy-metrics-gate; refresh manifest hashes while keeping tcg-vault-local L1/L3 customizations. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com>
1.8 KiB
1.8 KiB
OWASP-aligned security checklist (agent reference)
Cite the layer + item in findings (e.g. "Layer 2 — IDOR"). Not a substitute for penetration testing.
Layer 1 — Authentication
- All non-public API routes call a shared auth helper
- Login/register/forgot-password rate limited
- Session/JWT secret from environment; app fails start if missing
- No long-lived tokens in
localStoragewithout documented threat model - Password reset tokens single-use + short TTL
- No credentials in URLs or query strings
Layer 2 — Authorization
- Resource IDs in path/body checked against session user/tenant
- List endpoints filter by ownership — no "return all rows"
- Admin operations behind explicit admin guard
- Role checks use server-side source of truth (DB), not client-only flags
- Bulk operations cannot target arbitrary user IDs
Layer 3 — Input & injection
- All POST/PATCH/PUT bodies validated with schema
- Query params validated/coerced (Zod
z.coerceor explicit parse) - ORM/raw SQL uses parameters only
- No
dangerouslySetInnerHTMLwithout DOMPurify or equivalent - File paths constructed server-side; no
../from user input - SSRF: server-side fetch URLs not user-controlled to internal IPs
Layer 4 — Secrets & data
- No secrets in git history in this diff
NEXT_PUBLIC_prefix only on truly public values- PII minimized in logs and analytics events
- API responses omit internal IDs when unnecessary
Layer 5 — Dependencies
- No new high/critical
npm auditfindings introduced - Auth/crypto libs from reputable sources, pinned versions
Layer 6 — Transport & config
- Auth cookies: Secure + HttpOnly
- CORS allowlist explicit for API routes
- Webhook endpoints verify signatures