Skip to content
Last updated: Sep 25, 2026

Audit & Assessment Log ​

OwnerClassificationVersionEffectiveNext reviewStatus
Sekhar PrakashInternal0.22026-08-272026-11-27Draft

Purpose. Chronological record of every security assessment performed against the platform — internal reviews, automated scans, and independent audits — with scope, outcome, and a link to the source report or issue. This is the authoritative history of what has been assessed, when, and by whom. Assessments predating this portal (January–June 2026) were recorded in the architecture and blitz repositories; they are included here to preserve the continuous timeline. See Programme History.

How to read ​

Each row is one assessment event. "Result" summarises the outcome; the linked report or issue holds the detail. Recurring/verification passes are listed as separate dated rows to preserve the timeline. Planned assessments are listed with status ⚪ until performed.

Assessment log ​

DateAssessmentTypeScopeAssessorResultReport / issueStatus
2026-09-23/24F-25 runtime re-measurement + F-48 verificationRuntime scan (all 429 controllers imported, resolved schemas) · code trace · runtime probesblitz origin/main @ 03ea2f713 / 0313548abInternalF-25: 55 old routes fixed/disproved; real scope 39 Tier-1 + 2 Rule-3 (P0) and 47 Tier-2 (→ F-54); lint:security R1/R5 moved to the runtime scan with fail-loud on incomplete scans. F-48 resolved (bypass keyed on id; signup gated; verified at runtime). ➕ F-53 raised (SSO binding, P1)blitz#1014 · blitz#1559 · blitz#1573🟢
2026-09-15P1 re-verification passManual review · code trace · bun audit12 open P1 security issues across blitz origin/main @ 78f1bde2, blitz-ui @ 4f6e16e3, fin-infra mainInternal0 of 12 P1s fixed. ✅ GCP key regeneration confirmed (F-34/F-35 Open→Partial) — credential dead; blobs remain in both histories, .gitleaks.toml still absent in both repos, LinkedIn client id/secret rotation unconfirmed, and restrictions on the new key unverified (it is a client-side build var, so restrictions are the durable control). ⚠️ F-30 regressed 93→161 CVEs (2→4 critical) — drift went unnoticed because SCA is still not in CI (D14-02). F-42 reachability CONFIRMED by code trace — source_filter is t.Any() on tenant-authenticated write routes reaching raw SQL; severity held at P1. F-07 corrected — the 2026-09-09 'no longer cookies' note was half the system: blitz-ui still writes tokens to JS-readable cookies (~16 sites), access token 24h not the 5-min target, refresh never invalidated. F-28 root cause widened — the app logs tokens itself (signin.controller.ts:252 full refresh token at INFO; authenticator.ts:219 unredacted bearer; no pino redact anywhere), so removing ?token= does not close the leak; folded into blitz#1017 rather than filed separately. F-10 widened to three production TLS call sites. F-05 scoping answered — static headers can move to the edge, CSP cannot. Evidence comments posted to all 12 issuesFindings🟢
2026-09-15CI control-set changeControl reviewblitz, blitz-ui, fin-infraInternalLockfile guard + import guard withdrawn after efficacy review: 504 runs / 1 genuine catch (0.2%) and 312 runs / 0 catches respectively, at ~750 billed min/month. Org ruleset DefaultBranchProtection required_status_checks rule removed — branch protection (PR required, no force-push, no deletion) unchanged. bun audit added to each repo's weekly Dependency Health workflow (blitz gated at critical; blitz-ui report-only pending triage of 161 CVEs). Dead backport.yml / cherry-pick-ancestry-check.yml deleted (0 useful runs). Net: no merge-blocking security check remains; SCA moves from absent to weekly non-blockingControl Register🟢
2026-09-10Posture reconciliation + independent GRC reviewManual review · live issue query · gitleaksblitz, blitz-ui, fin-infra main; docs portalInternalP0 8→4 — F-01 (tenant binding), F-03/F-39 (SQLi), F-40 (password hashing) verified fixed in code and closed. F-42 raised (recon.filter.ts raw-SQL passthrough). D7 re-scored 🔴→🟠. F-34 + F-35 re-confirmed by gitleaks across both full histories (blitz-ui 2036 commits → 8 hits; blitz 2785 commits/809 MB → 39 hits — counts match the register exactly). The GCP API key is the same credential in both repos (verified by hash comparison): blitz-ui src/apps/ui/.env.production @ 102da79 and blitz railway-iac/shared/variables.ts @ 71f9f15. Both removed from HEAD, both still reachable in history. LinkedIn client id/secret pairs recorded as a second exposed credential class. Programme-level gaps recorded: risk register unpopulated, evidence register empty, no threat model, controls.yml not builtFindings🟢
2026-08-26Posture re-verificationManual reviewblitz origin/mainInternalP0 count 5→8; F-39/40/41 confirmed; F-38 risk-acceptedFindings🟢
2026-08-06Posture re-verificationManual reviewblitz origin/mainInternalF-02 backend RBAC resolved; F-25 reopened; F-38 raisedFindings🟢
2026-07-18Dependency lockfile remediationSCA3 reposInternalF-36 resolved; lockfile guard added; CVE baseline 190blitz#1104🟢
2026-07-10Posture re-verificationManual reviewblitz origin/mainInternalF-13 (ALB/TLS) resolved; partial progress on 6 itemsFindings🟢
2026-Q3Dependency scanSCA (bun audit)blitz, blitz-uiInternal190 CVEs (blitz 97, blitz-ui 93) vs committed lockfilesfin-infra#40🟠 ad-hoc
2026-Q3Secret scanningSecret scan (gitleaks)git history, 3 reposInternalblitz 39, blitz-ui 8 hits; real GCP keys → rotateblitz#1019🟠 ad-hoc
2026-Q3IaC scanIaC (Snyk)fin-infra TerraformInternal0 critical/high, 3 medium (SG ingress ×2, RDS IAM)fin-infra#40🟠 ad-hoc
2026-Q3Container image scanImage (Trivy)base imagesInternaloven/bun:slim 1C/7H; images unpinnedfin-infra#35🟠 ad-hoc
2026-04-07Authentication & access-control reviewDesign reviewAuth/IAMInternalAccess strategy defined (BetterAuth; SSO decision open)FINAISSE-AUTH-STRATEGY (pre-portal)🟢
2026-03-11Backend security posture assessmentManual reviewblitz backendInternalBaseline posture; critical — no input sanitisation before LLM callsSECURITY-POSTURE (blitz)🟢
2026-01-22Platform security & performance assessmentManual reviewplatformInternalInitial assessment; RBAC/pagination findings raised (F-25–F-28)SECURITY-AND-PERFORMANCE-GAPS (pre-portal)🟢
—SASTCode (CodeQL/Semgrep)3 reposPendingNot yet runfin-infra#40⚪ planned
—DASTRuntime (ZAP)stagingPendingNot yet run—⚪ planned
—Cloud posture (CSPM)Prowler / Security HubAWSPendingEnabled at AWS go-live—⚪ planned
—Independent penetration test3rd-partyfull platformPendingVendor/budget decision openfin-infra#39⚪ planned

Re-verification pass notes ​

Per-pass notes from each manual re-verification (relocated from the Findings Register 2026-08-27 so the register holds current state only). Each against origin/main.

2026-08-26 — P0 count 5 → 8 ​

  • New P0s:
    • F-39 — 2nd SQL injection, $queryRawUnsafe incl. ORDER BY
    • F-40 — weak password hashing (salted SHA-256, no KDF)
    • F-41 — no signin brute-force protection
  • Closed, risk-accepted (not fixed): F-38 Temporal tenant-scoping — reactivates when RBAC is seeded
  • Still open, unchanged: F-01, F-03, F-04, F-25, F-26

2026-08-06 — biggest app-P0 movement ​

  • Resolved: F-02 backend RBAC — server-side requirePermission (403 by default), catalogue + grants seeded
  • Partial: F-25 (create path fixed; update path still client-settable — reopened) · F-03 (validated except sourceentity)
  • New: F-38 (Temporal visibility not tenant-scoped — latent)
  • Still open: F-01 · F-26

2026-07-18 — dependency integrity ​

  • Resolved: F-36 — bun.lock committed + --frozen-lockfile across all builds; a reusable lockfile guard was added to block regressions (withdrawn 2026-09-15 — see the Control Register) (blitz#1104, blitz-ui#715/#716, fin-infra#53/#54)
  • New: F-37 (no branch protection on main in blitz / blitz-ui)
  • Note: authoritative CVE counts vs committed lockfile — blitz 97, blitz-ui 93 (190 total); F-29/F-30 updated

2026-07-10 ​

  • Resolved: F-13 (ALB/TLS)
  • Partial progress: F-03, F-11, F-12, F-18, F-22, F-27; frontend RBAC route guards added (backend F-02 still open)

Source of detail ​

Assessment methodology and lens coverage are defined in Coverage & Methodology. Individual findings are tracked in the Findings Register; formal audit reports (SOC 2, SOC 1) will be linked here once available.

Revision history ​

VersionDateAuthorChange
0.12026-08-27Sekhar PrakashInitial log seeded from coverage history.

Finaisse Internal — Confidential. Not for external distribution.

Finaisse Internal — Confidential. Access-restricted; not for external distribution.