Skip to content

Findings Register โ€‹

The consolidated worklist behind the dashboard maturity ratings. 37 findings (iteration 1 + re-verify), tracked across 39 GitHub issues (RBAC spans backend + frontend). Each row links to its issue, where the full evidence (file:line) and fix detail live. F-25โ€“F-28 came from the internal SECURITY-AND-PERFORMANCE-GAPS.md audit; F-29โ€“F-33 from the completeness review; F-34โ€“F-35 from the secret-scanning run; F-37 from a branch-protection review.

Re-verified 2026-07-10 (against origin/main): 1 resolved (F-13 ALB/TLS). Partial progress: F-03, F-11, F-12, F-18, F-22, F-27 (see the dashboard callout for details), and frontend RBAC route guards now exist (backend F-02 still open). Everything else unchanged.

Update 2026-07-18: F-36 resolved โ€” bun.lock committed + un-ignored and --frozen-lockfile enforced across every Docker/CI build in all three repos; a reusable lockfile guard (fin-infra lockfile-guard.yml, called by all repos) now blocks regressions (blitz#1104, blitz-ui#715/#716, fin-infra#53/#54). Dependency-CVE counts, now measured against the committed lockfiles, are authoritative: blitz 97, blitz-ui 93 (190 total) โ€” F-29/F-30 updated. New this pass: F-37 (no branch protection on main in the code repos, surfaced while making the guard a required check).

Why the detail is in the issues, not here

This page is the register โ€” severity, domain, what it is, and where it's tracked. The exact code locations and exploit walkthroughs stay in the linked GitHub issues (one click away). Same access boundary (@finaisse.com), but a single source of truth: the issue is authoritative, this table is the index.

Severity: P0 exploitable now / โ‰ค7d ยท P1 high / โ‰ค30d ยท P2 real weakness / โ‰ค90d. Domains link to the domain detail.

๐Ÿ”ด P0 โ€” Critical (must fix before production) โ€‹

IDFindingDomainTracked by
F-01Cross-tenant access via spoofable x-blitz-tenant-id header โ€” not bound to JWT tenant claim; no Postgres RLS backstop7blitz#992
F-02RBAC not enforced on finance endpoints โ€” any authenticated user can post/delete journals, approve payments4blitz#671 ยท blitz-ui#314
F-03 ๐ŸŸก partialSQL injection in matching output service โ€” sourceentity/displayfields now constrained; matchstatus/matchtype still raw-interpolated5blitz#998
F-04Permissive CORS (origin:()=>true + credentials) on all services incl. admin apimgmt; CSRF-able6blitz#999
F-25Mass-assignment of identity/audit fields โ€” client sets createdby/approvedby/assigneduseremail โ†’ impersonation + audit-trail falsification16 ยท 4blitz#1014
F-26/filter WHERE clauses accept arbitrary fields (no allowlist) โ†’ BOLA / cross-user data enumeration (~239 filter controllers)6 ยท 7blitz#1015

๐ŸŸ  P1 โ€” High โ€‹

IDFindingDomainTracked by
F-05No HTTP security headers on any service or frontend nginx (no CSP/HSTS/X-Frame-Options)3 ยท 5blitz#1000
F-07Auth tokens in JS-readable cookies (no httpOnly/Secure/SameSite); no refresh rotation4blitz#1001
F-08Stored XSS via unsanitized v-html on email bodies + AI content (no DOMPurify)5blitz-ui#657
F-09API docs (Swagger/Scalar) served without auth in non-dev environments6blitz#1002
F-10Temporal client TLS hardcoded false (lower risk on Railway's encrypted private net; must fix for AWS)3blitz#1003
F-11AWS Day-1 detection baseline missing (CloudTrail, GuardDuty, Security Hub, VPC Flow Logs, WAF) โ€” go-live blocker9 ยท 11fin-infra#31
F-12AWS IAM resource scopes too broad (kms:Decrypt on *, ECS/CloudFront on *)4 ยท 9fin-infra#32
F-13 โœ… resolvedNo ALB / TLS termination in AWS Terraform โ€” AWS Phase 3 added ALB + ACM TLS + 80โ†’443 redirect + WAF (closed 2026-07-10)3fin-infra#33
F-23No multi-factor authentication for application users (esp. admin/approver roles)4blitz#1007
F-24No independent validation โ€” establish penetration test + vulnerability disclosure (VDP) program14fin-infra#39
F-27 ๐ŸŸก partialPagination: itemsPerPage now capped (max 1000, too high); take/skip still unbounded6blitz#1016
F-28JWT accepted via query param (authenticator.ts:46) โ†’ token leakage to logs4 ยท 11blitz#1017
F-2997 open dependency CVEs in blitz (1 critical, 37 high) โ€” authoritative vs the committed lockfile (was 114 on an unpinned tree; re-measured 2026-07-18 post-F-36); SCA not in CI8blitz#1018
F-3093 open dependency CVEs in blitz-ui (2 critical, 49 high) โ€” authoritative vs the committed lockfile (re-measured 2026-07-18 post-F-36); SCA not in CI8blitz-ui#667
F-31No automated security scanning in CI (SCA/SAST/secret/IaC/image) โ€” establish the program14 ยท 8fin-infra#40
F-34Secrets committed to blitz-ui git history (8 hits incl. GCP key in .env.production) โ€” rotate + scrub4 ยท 8blitz-ui#668
F-35Secrets in blitz git history (39 hits; real GCP key in railway-iac + generated-file FPs) โ€” rotate + .gitleaks.toml4 ยท 8blitz#1019
F-37 ๐Ÿ†•No branch protection on main in blitz and blitz-ui โ€” force-push and unreviewed merge possible, no required status checks (fin-infra is protected; guard now required there). Weakens SCM integrity and undercuts the new CI guards14 ยท 8fin-infra#55

๐ŸŸข P2 โ€” Medium โ€‹

IDFindingDomainTracked by
F-06Rate limiting only on agents โ€” auth/login + main API unthrottled (Railway Fastly gives some edge protection)6blitz#670
F-14AI/agent surface: PII to LLM with no redaction, shared key (role-spoof part covered by P0 #671)5 ยท 7blitz#669
F-15Incomplete audit trail on financial records; no tamper-evidence / signing16blitz#1008
F-16Server-side state-transition guards + segregation-of-duties unverified17blitz#1009
F-17No SPF/DKIM/DMARC; unthrottled email-triggered workflows; attachment parsing risk3 ยท 5blitz#1004
F-18Encryption uses AWS-managed keys only; no CMKs, no S3 TLS-only policy, no secret rotation2 ยท 9fin-infra#34
F-19Unbounded tenant Prisma client / pg-pool caches (no TTL/eviction)7blitz#1005
F-20No container image scanning / signing / digest pinning; :latest tags8 ยท 10fin-infra#35
F-21No pre-commit secret scanning; dead GOOGLE_API_KEY in UI build4blitz#1006
F-22CI/CD + account hardening: no Terraform plan gate, no Identity Center/MFA, no break-glass, single NAT14 ยท 9fin-infra#36
F-32No endpoint/workstation security baseline (disk encryption, MDM, EDR) โ€” developer laptops are the perimeter19fin-infra#41
F-33No security-awareness / people-security program (training, phishing sim, joiner/leaver)20fin-infra#42
F-36 โœ… resolvedbun.lock gitignored โ†’ non-reproducible builds + unreliable dependency scanning โ€” lockfile committed + un-ignored, --frozen-lockfile enforced across all Docker/CI builds in all 3 repos, reusable lockfile guard blocks regressions (closed 2026-07-18)8blitz#1072 ยท blitz-ui#694

Live queries: all open security issues ยท Finboard project ยท filter by severity from the dashboard cards.

Findings tagged "needs runtime confirmation" in their issues (F-01 cache path, F-03 reachability, F-16 enforcement) should be validated dynamically โ€” this register is from a read-only review, not a penetration test (see F-24).