Security Controls Register

Africa Watch — Savvy Ventures Limited  ·  Generated:

18
Implemented
0
Partial
2
Planned

Implemented Controls

IDControl NameNIST CSF 2.0ISO 27001:2022OwnerEvidenceVerifiedNotes
CTL-001Geo-disambiguation filterID.RA, DEA.8.7Backend Eng.AMBIGUOUS_COUNTRY_NAMES + isGeoRelevant() in 3 pathsCurrent
CTL-002Topic relevance scoringID.RAA.8.11Backend Eng.topicScore() at ingest, /africa/events, /social-searchCurrent
CTL-003JWT authenticationPR.AAA.5.15Security LeadrequireAuth middleware, revocation tableCurrent
CTL-004Role-based access controlPR.AAA.8.2Security LeadrequireRole() middleware, ROLE_LEVELS hierarchy (admin/analyst/field/observer/free)Current
CTL-005MFA for loginPR.AAA.5.17Backend Eng.mfa_codes table, nodemailer/Brevo SMTP deliveryCurrent
CTL-006Rate limitingPR.PTA.8.6Security LeadRATE_LIMIT_RULES per route in security-middleware.jsCurrent
CTL-007CSP / security headersPR.PSA.8.20Security LeadattachSecurityMiddleware(), nonce-based CSP, HSTS, X-Frame-OptionsCurrent
CTL-008Audit loggingDE.CMA.8.15DevOps/SREaudit_log table, writeAudit() on all admin actionsCurrent
CTL-009Prompt injection sanitisationPR.DSA.8.7Backend Eng.sanitizePromptInput() — blocklist + token stripping in security-middleware.jsCurrent
CTL-010Webhook HMAC signingPR.DSA.8.24Backend Eng.WEBHOOK_SIGNING_KEY env var, sha256 HMAC on all outbound webhook payloadsCurrent
CTL-011Startup dependency checkPR.PSA.8.9DevOps/SREREQUIRED_MODULES check at boot — process.exit(1) with clear message on missing moduleCurrent
CTL-012Confidence scoring modelID.RAA.8.11Data/Intel LeadcomputeConfidence() per event — freshness, corroboration, source quality. UI badge on each feed item.Current
CTL-013Error handler orderingPR.PSA.8.28Backend Eng.attachErrorHandler() exported separately, called after all routes are registeredCurrent
CTL-014Health endpointDE.CMA.8.16DevOps/SREGET /health — public, returns uptime, node version, API key presenceCurrent
CTL-015False-positive telemetryDE.CMA.8.16Data/Intel Leaddropped_geo/topic counters per /social-search request; hourly aggregation in search_metrics table; GET /admin/metricsCurrent
CTL-016Route authorization testsPR.AA, GV.OVA.5.15Engineering Leadroute-auth-tests.js + GitHub Actions workflow (route-auth-tests.yml) — runs on every push to master, tests all /admin/* routes across all rolesCurrent
CTL-017Backup and restoreRCA.8.13DevOps/SREbackup.sh (SQLite .backup + integrity check + compress, 14-day retention) — cron runs daily at 02:00 UTC on production server; logs to /var/log/africa-watch-backup.logCurrent
CTL-018CI/CD security gatesPR.PSA.8.29Engineering Leadnpm audit (--audit-level=high) + CodeQL SAST + TruffleHog secret scan in GitHub Actions (security.yml); deploy blocked until security-gate job passesCurrent

Planned Controls

IDControl NameNIST CSF 2.0ISO 27001:2022OwnerDescriptionTargetNotes
CTL-019Managed secrets vaultPR.AAA.8.24DevOps/SREMigrate from .env file to managed vault (HashiCorp Vault or cloud secrets manager)Day 90+
CTL-020External penetration testID.RAA.5.36CISOQuarterly external assessment by independent security firmDay 90+