Only the latest release on main is actively supported with security patches.
| Version | Supported |
|---|---|
| latest | ✅ |
| older | ❌ |
Please do NOT open a public GitHub issue for security vulnerabilities.
FusePay takes security seriously. If you discover a vulnerability — especially one that could result in loss of funds — please follow the responsible disclosure process below.
- Email: Send a detailed report to
security@fusepay.io - Encryption: Encrypt your report using our PGP key (published at
https://fusepay.io/.well-known/pgp-key.asc) - Include:
- A clear description of the vulnerability
- Affected contract(s) and function(s)
- Steps to reproduce
- Proof-of-concept code if available
- Your assessment of severity and impact
- Your suggested fix if you have one
| Action | Timeline |
|---|---|
| Acknowledgement | Within 48 hours |
| Initial assessment | Within 5 business days |
| Patch development | Depends on severity |
| Public disclosure | Coordinated with reporter |
| Severity | Description | Examples |
|---|---|---|
| Critical | Direct loss of funds | Reentrancy, unauthorised withdrawal |
| High | Privilege escalation or partial fund loss | Role bypass, fee manipulation |
| Medium | Denial of service or logic errors | Stuck escrow, incorrect accounting |
| Low | Minor issues with limited impact | Gas inefficiency, event omission |
The following are in scope for security reports:
- All contracts in
contracts/ - Shared packages in
packages/ - Deployment scripts in
scripts/ - Integration tests that reveal contract vulnerabilities
The following are out of scope:
- FusePay off-chain backend services (separate repository)
- Frontend applications
- Third-party dependencies (report to the upstream project)
- Issues already disclosed in
docs/audits/
FusePay operates a bug bounty programme for critical and high-severity vulnerabilities. Details are published at https://fusepay.io/bug-bounty.
FusePay contracts are designed with multiple security layers:
- Access Control — Every privileged function checks roles via the
access-controlcontract before execution - Multi-Signature — Treasury withdrawals and admin operations above configured thresholds require multi-sig approval
- Input Validation — All public entry points validate inputs before touching state
- Safe Arithmetic — All arithmetic uses checked operations or i128/u128 to prevent overflow
- Typed Errors — All error paths return typed
ContractErrorvariants — no panics in production - Event Emission — Every state change emits a structured event for off-chain auditability
- Storage Isolation — Each contract manages its own storage namespace; no cross-contract storage writes
- Soroban contracts operate in a deterministic sandbox; time-based operations rely on ledger sequence numbers and timestamps which can be influenced by validators within bounds
- Oracle price feeds (future module) introduce external data trust assumptions; feeds must be verified before use in financial calculations
- Multi-sig expiry relies on ledger close time; network congestion can affect timing
| Date | Auditor | Scope | Report |
|---|---|---|---|
| TBD | TBD | All contracts v1.0 | Pending |
Audit reports are published in docs/audits/.