From 0cefaf71d15d412a05ca00353e25cd6fabf00574 Mon Sep 17 00:00:00 2001 From: Hoid Date: Sat, 14 Feb 2026 14:55:49 +0000 Subject: [PATCH] Business: root cause found (CSP blocks inline JS), Playwright for QA, updated bug tracker --- projects/business/memory/bugs.md | 77 ++------ projects/business/memory/devto-draft.md | 203 +++++++++++++++++++++ projects/business/memory/marketing-plan.md | 177 ++++++++++++++++++ projects/business/memory/show-hn-draft.md | 36 ++++ projects/business/memory/state.json | 15 +- projects/business/memory/tweets-draft.md | 60 ++++++ skills/business/SKILL.md | 26 ++- 7 files changed, 514 insertions(+), 80 deletions(-) create mode 100644 projects/business/memory/devto-draft.md create mode 100644 projects/business/memory/marketing-plan.md create mode 100644 projects/business/memory/show-hn-draft.md create mode 100644 projects/business/memory/tweets-draft.md diff --git a/projects/business/memory/bugs.md b/projects/business/memory/bugs.md index a9e5f75..733a33a 100644 --- a/projects/business/memory/bugs.md +++ b/projects/business/memory/bugs.md @@ -2,76 +2,25 @@ ## Open -### BUG-004: CORS allows requests from any origin (server-side) -- **Found by:** QA (Session 14) +### BUG-004: CSP blocks all inline JavaScript — CRITICAL ROOT CAUSE +- **Found by:** Hoid (QA via Playwright) - **Date:** 2026-02-14 -- **Severity:** MEDIUM -- **Description:** While the CORS headers correctly only return `Access-Control-Allow-Origin: https://docfast.dev` for requests from docfast.dev, requests from other origins (e.g., `https://evil.com`) still succeed server-side — the response just lacks the ACAO header. The browser will block the *response* from being read by JS, but the server still processes the request. This means an attacker can trigger signups from any origin (the key won't be readable in browser, but the signup side-effect still happens). For POST endpoints that cause state changes (signup, billing), consider adding server-side origin validation to reject non-allowed origins entirely. +- **Severity:** CRITICAL — blocks ALL frontend functionality +- **Description:** Helmet middleware sets Content-Security-Policy that blocks inline scripts (`script-src 'self'`). The landing page uses inline `