Skip to content

Security & Readiness Overview

Audience: CISOs, FI risk reviewers, and integration leads
Last reviewed: 2026-07-14 (v0.1.0) · last-verified: 72298a8 (FMS conformance package)
Product: Waspada AI — edge-first Malaysian mule-account intake from victim evidence (SDK → partner JWT → gateway → FMS / STIX / analyst SSE). Not in-session behavioral biometrics.

Positioning (settled)

  • Job: destination-account extract from a victim receipt / chat artifact — on-device, PII-stripped, advisory tip beside FMS.
  • Demand on banks: RMiT Appendix 11(2)(b)(viii) (detect transfers to suspected mule accounts using industry / LE repositories). Waspada is not that national repository.
  • Packaging characterisation (counsel TBD): Outsourcing PD Appendix 2(n)/(o) — commercially available software in the partner VPC. Not “already BNM-approved.”
  • Bank owns freeze. Public WhatsApp ingest is closed (ADV-005).

Readiness status

Waspada is past "hardened demo" and into operable pilot infrastructure. The trust stack is designed, implemented, and — for the durable path — exercised under controlled failure. It is not yet bank-production or RMiT-certified.

ContextStatusConditions
Supervised pilot (sandbox / BNM-sandbox)Ready — with conditionsAdvisory disposition only; partner JWT integration; FI retains freeze authority
Production / national infrastructureNot yet4 gates open: independent VAPT, staging durable soak, FI RMiT acceptance, bank FMS webhook acceptance

One-line status: Ship a supervised pilot today. Do not claim BNM-ready production until VAPT + staging durable soak + FI acceptance of the RMiT mapping.


What the hardening sprints delivered

Work landed as a deliberate sequence: close credibility holes → lock data foundations → measure extraction → ship durable runtime → prove ingest and outbox under load.

1. Credibility & AppSec

Closed adversarial-review residuals that would have failed a CISO read in minutes:

  • HMAC blinded_hash + verifiable gateway signatures
  • Spec-shaped STIX egress; private/IPv6 host filtering
  • PII dual gate (NRIC / phone / email); NRIC≠account disambiguation
  • Hardened runtime (no demo signing oracle; Redis mandate via REQUIRE_REDIS)
  • Advisory contract — alerts are intelligence, not automated freeze; ADV-005 public-triage quarantine

2. Phase B0 — durable data foundations

Postgres schema, tenancy, retention, and per-row DEK + AAD-bound alert envelopes. Boot refuses DATABASE_URL without a valid ALERT_DATA_KEK. Spec: phase-b0-foundations.

3. Extraction accuracy as a gate

  • Clean corpus (n=37): hard CI gate P≥0.90 / R≥0.85 on account+BIC — regression floor on labeled text.
  • Noisy / adversarial corpus (n=21): soft CI gate P≥0.85 / R≥0.80 — in-sample, post-fix. ~1 in 15 account outputs was a wrong account (line-wrap); misses are safer than mismatches. Containment: advisory + three-institution actionable threshold.
  • DuitNow QR “no account” scored as correct null — not invented.

See security overview, extraction tiers, and package EXTRACTION_METRICS.md.

Honest limit: No holdout yet; NER / image→OCR end-to-end still outside the gate.

4. RMiT mapping + Phase B1–B4 runtime

LayerShipped
ComplianceParagraph-cited RMiT mapping across 10 domains (mapping ≠ certification)
B1202 + event_id + schema_version: 2; durable audit_events; Redis Streams publish
B2Pipeline consumer; Streams consumer with processed_events idempotency
B3Encrypted alerts / corroboration writers
B4delivery_outbox + poller; Redis pub/sub for cross-replica SSE

Runtime notes: phase-b1-b4-runtime.

5. Load-test + durable-path soak

TopologyResultArtifact
Memory (ingest + in-process pipeline)100 req/s · p50 13 ms · p99 64 ms · 3000/3000 2xxREPORT.md
Durable (Redis + Postgres + outbox + mock FMS)~30–36 req/s · p99 ~1.8–2.0 s · ~98.5% outbox recovery through 20% mock fail; ~94.7% at 50%REPORT-durable.md

--mock-fms + fail-rate matrix exercises retry/backoff without a live bank webhook. Drain runs while the outbox poller is alive (first matrix was discarded after that methodology bug was found).

Durability–latency trade-off: durable-path p99 reflects the cost of guaranteed delivery (Postgres write + Redis Streams publish + outbox commit). Memory-only path is 64 ms p99. This is a measured design cost, not a performance bug — do not claim sub-second gateway ingest on the durable topology.


Trust stack — confirmed vs open

Confirmed (no known drift)

  • Edge extraction → partner RS256 JWT → gateway defense-in-depth → FMS / STIX / SSE
  • RMiT table paragraph-cited; B1–B4 modules match the runtime doc
  • audit_events, encrypted alerts (DEK+AAD), delivery_outbox, Streams + processed_events
  • Measured ingest latency (memory) and outbox recovery under mock FMS failure (local Docker)
  • Published FMS contracts + offline signature verify + conformance simulator + STIX lint CI (Integration & Conformance)

Measured trade-off (not a gap)

Durable ingest p99 ~2 s is the price of the B1–B4 path above. Publish both topologies; never collapse them into one “gateway latency” claim.

Explicitly open

GapWhy it mattersOwner
Independent VAPT letterFI / §11 expectation; largest remaining credibility holeHire
Staging durable soak (e.g. Railway Redis+Postgres)Local Docker ≠ multi-service deploy proofEngineering
Streams recovery gapDocumented residual in consumer-group recovery after replica crash. Tracked and scheduled.B5
Audit write batching1 INSERT/event fine for pilot; limits harder loadB5+
Bank FMS acceptanceLive webhook + disposition policyPartner-gated

Claims we make / do not make

Make

  • Edge-first, advisory mule-fraud telemetry for Malaysian typologies
  • Measured extraction gates: clean hard floor + noisy soft floor; wrong-account mode characterized
  • Hardened gateway with durable optional path (Redis + Postgres + outbox)
  • Load numbers with topology stated (memory vs durable)
  • Alerts independently signature-verifiable offline against a published contract
  • FMS conformance simulator + STIX 2.1 lint gate on real formatter output

Do not make (yet)

  • “BNM-compliant” / “RMiT-certified”
  • Absolute “zero PII egress”
  • Sub-second durable gateway ingest
  • Cross-bank corroboration / automated freeze
  • That public / WhatsApp reports feed bank FMS or corroboration (ADV-005 quarantines them until partner or analyst promotion)
  • Production readiness without VAPT + FI acceptance

  1. Commission VAPTengagement brief is ready for provider RFP; goal is an external CISO letter
  2. Railway (or equivalent) durable soak — same mock-FMS matrix against staging LOAD_TEST_URL (harness in PR #14)
  3. B5 Streams recovery — close the documented consumer-group residual (also called out in the VAPT brief)
  4. Partner sandbox — real FMS webhook acceptance (only step that requires a bank)

Document map

NeedRead
This summaryYou are here
Integration / FMS conformanceIntegration & Conformance
VAPT RFP / kickoffVAPT engagement brief
CISO packSecurity & compliance
Regulatory mappingRMiT mapping
Data foundationsPhase B0
Durable runtimePhase B1–B4
Advisory postureAdvisory contract
Latency proofLoad-test · Durable soak

Edge tools for citizens. Threat feeds for banks.