Version: 1.0
Last Updated: 2026-03-30
Status: Active
This document identifies threats to the Nova Rewards platform across its three layers: Soroban smart contracts on Stellar, the Node.js backend API, and the Next.js frontend. It follows the STRIDE methodology and maps threats to mitigations.
[User Browser] ──HTTPS──> [Next.js Frontend / Vercel]
│
[REST API]
│
[Node.js Backend / AWS]
│ │
[PostgreSQL DB] [Stellar Network]
│
[Soroban Contracts]
- nova_token
- reward_pool
- vesting
- referral
- admin_roles
Trust boundaries:
| Actor | Motivation | Capability |
|---|---|---|
| External attacker | Financial gain, disruption | Medium–High |
| Malicious merchant | Fraudulent reward issuance | Low–Medium |
| Compromised user account | Token theft | Low |
| Insider threat | Data exfiltration, sabotage | Medium |
| Automated bot | Reward farming, referral abuse | Medium |
| ID | Threat | STRIDE | Impact | Likelihood | Mitigation |
|---|---|---|---|---|---|
| SC-01 | Unauthorized token minting via admin_roles bypass | Elevation of Privilege | Critical | Low | Role-based access control enforced on-chain; multi-sig admin keys |
| SC-02 | Reentrancy attack on reward_pool withdrawal | Tampering | Critical | Low | Soroban’s execution model prevents reentrancy; checks-effects-interactions pattern |
| SC-03 | Integer overflow in token arithmetic | Tampering | High | Low | Rust’s overflow checks; use of checked arithmetic |
| SC-04 | Vesting schedule manipulation | Tampering | High | Low | Immutable schedule set at contract init; only admin can modify with multi-sig |
| SC-05 | Referral self-referral / circular referral abuse | Tampering | Medium | Medium | On-chain validation rejects self-referral and cycles |
| SC-06 | Contract upgrade introducing malicious logic | Tampering | Critical | Low | Upgrade requires multi-sig; time-lock delay before activation |
| SC-07 | Front-running reward claims | Information Disclosure | Medium | Low | Stellar’s deterministic ordering reduces front-running risk |
| ID | Threat | STRIDE | Impact | Likelihood | Mitigation |
|---|---|---|---|---|---|
| API-01 | JWT token forgery / replay | Spoofing | High | Low | Short-lived JWTs; token rotation; revocation list |
| API-02 | SQL injection via campaign/user inputs | Tampering | High | Low | Parameterized queries; ORM usage |
| API-03 | Mass assignment on user/merchant objects | Tampering | Medium | Medium | Strict DTO validation (whitelist fields) |
| API-04 | Reward endpoint abuse (double-spend) | Tampering | High | Medium | Idempotency keys; DB-level unique constraints |
| API-05 | Webhook payload spoofing | Spoofing | High | Medium | HMAC signature verification on all inbound webhooks |
| API-06 | Sensitive data exposure in API responses | Information Disclosure | Medium | Medium | Response filtering; no PII in logs |
| API-07 | Brute-force on auth endpoints | Denial of Service | Medium | High | Rate limiting (per IP + per account); account lockout |
| API-08 | SSRF via merchant-supplied URLs | Tampering | High | Low | URL allowlist; block internal IP ranges |
| API-09 | Privilege escalation (user → merchant → admin) | Elevation of Privilege | High | Low | Role checks on every protected route; least-privilege DB roles |
| ID | Threat | STRIDE | Impact | Likelihood | Mitigation |
|---|---|---|---|---|---|
| FE-01 | XSS via user-supplied content | Tampering | High | Medium | React’s default escaping; strict CSP header |
| FE-02 | Wallet private key exposure | Information Disclosure | Critical | Low | Keys never leave the browser; Freighter wallet handles signing |
| FE-03 | Clickjacking on transaction approval UI | Tampering | Medium | Low | X-Frame-Options: DENY; CSP frame-ancestors 'none' |
| FE-04 | Malicious redirect after wallet connect | Spoofing | Medium | Low | Validate redirect URLs against allowlist |
| FE-05 | Supply chain attack via npm dependency | Tampering | High | Low | Dependency pinning; npm audit in CI; Dependabot alerts |
| ID | Threat | STRIDE | Impact | Likelihood | Mitigation |
|---|---|---|---|---|---|
| INF-01 | Exposed secrets in environment variables / repo | Information Disclosure | Critical | Medium | Secrets in AWS Secrets Manager / Vault; .gitignore enforced |
| INF-02 | Unpatched OS / container vulnerabilities | Tampering | High | Medium | Automated patching; container image scanning in CI |
| INF-03 | Database credential compromise | Information Disclosure | High | Low | Rotated credentials; DB not publicly accessible; VPC isolation |
| INF-04 | DDoS against API or frontend | Denial of Service | High | Medium | Cloudflare WAF + rate limiting; AWS ALB with auto-scaling |
| INF-05 | Unauthorized AWS console access | Elevation of Privilege | Critical | Low | MFA enforced; least-privilege IAM; CloudTrail logging |
Likelihood
Low Medium High
Impact
Critical SC-01 INF-01 —
SC-06
FE-02
High SC-03 API-03 API-07
API-01 API-04
API-08 FE-05
API-09 INF-02
Medium SC-04 API-06 —
FE-03 FE-01
INF-03
Low SC-07 SC-05 —
Assumptions:
/terraformOut of scope:
Reviewed by: Security Team
Next review due: 2026-09-30