Skip to main content

Audit β€” 2026-07-25

Frozen snapshot β€” do not update. Kept for how a decision was reached, not for what is true now. Current state lives in Architecture β†’ Current State.

Four parallel audits over all 10 repos: secrets (full git history, every commit), Firebase security posture, git/dependency hygiene, and the GPU backend. Findings ranked by severity. Secret values redacted throughout.


P0 β€” CRITICAL: live secrets in pushed GitHub history (acesense-gpu-backend)​

All five items below are in commits that are ancestors of origin/main on git@github-acesense:Acesense/acesense-gpu-backend.git β€” they are fetchable by anyone who can clone. Deleting them from the working tree changed nothing.

#SecretHistorical pathWindow
1GCP service-account private key β€” acesense-prod (PRODUCTION) (runpod@acesense-prod.iam.gserviceaccount.com, key id 360da8c7…a33a)firebasecred/acesense-prod-360da8c714c2.json94dfdf0 2026-01-14 β†’ 6505449 2026-01-15
2Firebase Admin SDK key β€” acesense-6fd55 (key id 1551dbe9…9bf4; full bypass of Firestore/Storage rules)firebasecred/acesense-6fd55-…json8ab7984 2025-12-18 β†’ 94dfdf0
3Anthropic API key (sk-ant-api…9gAA)firebasecred/anthropic-api, anthropic-apiβ†’ 6505449
4RunPod key rpa_4CYYOA…x1w813 files: test/monitor scripts, functions/main.py, docssince fb979a0 2025-11-09
5RunPod key rpa_56OV7U…u3hqscripts/deploy_test.sh Γ—21360c2f β†’ 2121d33

Remediation, in this exact order:

  1. Rotate/revoke all five at the provider consoles FIRST (GCP IAM by key id, RunPod console, Anthropic console). Purging history before rotating only hides live keys. Audit GCP/RunPod/Anthropic usage logs from 2025-11-09 onward.
  2. Purge history: git filter-repo --path firebasecred --path anthropic-api --invert-paths plus --replace-text for the two rpa_ literals; force-push all refs/tags.
  3. GitHub Support ticket to expire cached views of old SHAs (force-push alone leaves them reachable); collaborators re-clone.
  4. Add a scheduled full-history gitleaks run β€” the per-repo secret-scan.yml only scans BASE_SHA..HEAD_SHA and structurally cannot catch these.

Good news: the previously feared auth-function OAuth-token leak is a non-issue β€” full