deckhearth/.cursor/skills/security-audit/references/owasp-checklist.md
varutasu c6c1364dd6
chore(agent-pipeline): sync 0.6.0/0.7.0 artifacts (#155)
* 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>
2026-08-14 18:56:01 -05:00

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 localStorage without 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.coerce or explicit parse)
  • ORM/raw SQL uses parameters only
  • No dangerouslySetInnerHTML without 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 audit findings 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