Skip to content

Security Status

Executive Overview — all summaries for decision-makers.

Last updated: 2026-08-04

URL: https://docs.mqa.group/ops/SECURITY-STATUS — not /docs/en/ops/… (repo path ≠ site path).

Implemented ✅

MeasureDetails
CORS allowlistportal.mqa.group + env merge
Auth on sensitive APIsemail, pdf, ai-budget, ai-tender, ai-audit-readiness, analytics GET
/uploads protectedauthenticate middleware
Cron fail-closedCRON_SECRET required in production
Mock token blockedProduction frontend + backend
Admin seed APIDevelopment only
Deploy without seeddocker-entrypoint.sh → migrate only
Email redirect allowlistNo open redirect
HTML sanitizationDOMPurify in frontend
Security headersserve.json on frontend
PDF downloadAuth via fetch + Blob
Env validationSKIP_OAUTH_VALIDATION, CRON_SECRET, JWT, CORS
Media Hub → R2Presigned uploads to MQA-org bucket mqa-media (2026-08-04)
Developer docsVitePress at docs.mqa.group; HTTP Basic Auth when DOCS_PASSWORD is set on mqa-docs

Open ⚠️ (prioritized)

PriorityTopicNotes
HIGHJWT in sessionStorage → XSS riskEvaluate HttpOnly cookies
HIGHLegacy uploads on Render ephemeral FSPDF generators, audit/branding multer still write to /uploads/* — migrate to R2
HIGHIDOR Policies/Media/InquiriesCode review
MEDIUMPostgres IP allowlistRestrict in Render Dashboard
MEDIUMTighten frontend CSPExtend serve.json
MEDIUMSecret rotation after CF migrationRevoke old private R2 keys (T+7); see CLOUDFLARE-MIGRATION
MEDIUMDocs site access controlSet DOCS_PASSWORD on Render mqa-docs (Basic Auth; optional DOCS_USERNAME, default mqa)
LOWPostgres RLSArchitecture decision

Security Audit Reference

Full audit 2026-08-03 in chat / agent transcript.
CRITICAL fixes from audit: resolved (as of deploy 094f298).

Reporting Process

Security incident:

  1. Notify Lead Developer + MQA IT
  2. Rotate affected secrets
  3. Review Render logs + AuditLog
  4. GDPR: 72h notification deadline if applicable (compliance)

Tests

bash
# Backend security tests
cd backend && npm test -- --testPathPattern=security

# npm audit (CI)
npm audit --audit-level=high

Next Review

Quarterly or before major release.