snapapi: session 68 — ingress-level signup block, key cleanup

This commit is contained in:
Hoid 2026-03-07 09:02:51 +01:00
parent a8de348e0a
commit 39d22c3cff
2 changed files with 62 additions and 1 deletions

View file

@ -1,5 +1,66 @@
# SnapAPI Session Log
## Session 68 — 2026-03-07 09:00 CET (Security Mitigation)
**Goal:** Mitigate BUG-016 (free signup vulnerability) on production without a full redeploy.
**Work Done:**
### 1. Emergency Ingress-Level Signup Block (CEO direct)
- **Problem:** BUG-016 — `/v1/signup/free` still exploitable on production, generating unlimited free API keys
- **Approach:** Created Traefik IngressRoute + Middleware in `snapapi` namespace to intercept `/v1/signup/*` at ingress and rewrite to `/blocked` (serves 404)
- **Result:** ✅ POST to `/v1/signup/free` now returns 404 page. All other endpoints unaffected.
- **Resources created:** `block-signup` IngressRoute + `block-signup-replace` Middleware in `snapapi` namespace
- **Note:** This is a temporary mitigation. The proper fix (staging codebase) still needs production deploy.
### 2. Leaked Key Cleanup (CEO direct)
- Cleaned up test key created during verification
- Purged ALL 6 remaining free-tier keys from production DB (all QA artifacts)
- Production DB now has 0 API keys (clean slate for paid customers)
### 3. Health Verification
- Production: ✅ 2 replicas running, health OK, homepage/docs/playground all working
- Staging: ✅ 1 replica running, 493 tests passing
**Investor Test:**
1. Stranger trust with money? **Getting closer** — signup vulnerability now blocked at ingress
2. Data loss on crash? **No** (CNPG PostgreSQL)
3. Free tier abuse? **⛔ BLOCKED** — ingress-level mitigation active, 0 free keys in DB
4. Key recovery? **Staging only** — production still on v0.5.2
5. All website features work? **Staging only** — production missing usage dashboard, recovery, PDF, etc.
**Remaining Blockers (all external):**
- Production deploy approval (38+ commits behind, 493 tests)
- Stripe webhook URL registration
- CI/CD Forgejo token (write:package scope)
- Staging TLS (DNS for staging.snapapi.eu)
- External uptime monitoring
**Assessment:** Production is now **no longer actively vulnerable** thanks to the ingress block. However, it's still running ancient code (v0.5.2) missing dozens of features and fixes. The staging codebase is production-ready and well-tested. Deploy approval remains the #1 priority.
---
## Session 67 — 2026-03-06 21:00 CET (Health Check)
**Goal:** Evening health check, assess priorities.
**Health Check:**
- Production: ✅ running, 2 replicas, v0.5.2 — **BUG-016 STILL EXPLOITABLE** (free signup returns 200)
- Staging: ✅ running, 1 replica, 493 tests
**Work Done:** None — all blockers are external (prod deploy approval, Stripe webhook, DNS, CI/CD token). Adding more staging features would only widen the gap.
**Investor Test:**
1. Stranger trust with money? **NO** — production still has free signup vulnerability
2. Data loss on crash? **No** (CNPG PostgreSQL)
3. Free tier abuse? **⚠️ YES** — BUG-016 confirmed exploitable right now
4. Key recovery? **Staging only**
5. All website features work? **Staging only** — production 38+ commits behind
**Priority:** Production deploy is the single most important action. Staging is feature-complete and well-tested. Every hour production stays on v0.5.2 is an active security vulnerability.
---
## Session 66 — 2026-03-06 18:00 CET (Bugfix Session)
**Goal:** Fix remaining open bugs (BUG-020, BUG-021) with TDD.

View file

@ -1,6 +1,6 @@
{
"phase": "production-live",
"version": "0.5.2-prod (VULNERABLE: free signup still live) / 0.11.0-staging (490+ tests)",
"version": "0.5.2-prod (signup BLOCKED at ingress) / 0.11.0-staging (493 tests)",
"staging": {
"status": "running",
"namespace": "snapapi-staging",