If you find a security issue in this repository, please report it privately first. Do not open a public issue for anything that could put funds at risk.
Preferred channel: GitHub private vulnerability reporting — use the "Report a vulnerability" button on the Security tab of this repository. This creates a private advisory only the maintainers can see.
Please include:
- what the issue is, and which file and line it lives in
- how to reproduce it — a script or a curl command is ideal
- what an attacker gains
- Acknowledgement: within 3 working days.
- Assessment: within 10 working days we will tell you whether we consider it a vulnerability, and what severity we assign it.
- Fix: critical issues that can move funds are prioritised over everything else. We will keep you updated while the fix is in progress.
- Credit: we will name you in the release notes unless you prefer otherwise.
We do not currently operate a bug bounty.
In scope:
- this repository's server, HD wallet module and front end
- the swap protocol as implemented here
Out of scope:
- third-party APIs this software calls (Blockcypher, WhatsOnChain, Kraken)
- any hosted deployment operated by someone other than the maintainers
- findings that require an attacker to already hold the operator's admin key, liquidity WIF or server access
This software is published so that anyone can run their own on-ramp. If you operate an instance, the security of your deployment is yours:
ORDSWAP_ENCRYPTION_KEYandORDSWAP_ADMIN_KEYmust be strong, unique and kept out of version control (both are mandatory; the server refuses to start without them).- Keep only working liquidity in the hot wallet. It is a hot wallet by design.
- Terminate TLS in front of this service; it speaks plain HTTP.
- Keep the setup endpoints loopback-only (the default) unless you have a specific reason not to.
- Watch the
needs_reviewcounter on/admin/stats. Orders inunderpaid,payout_failed,processingorbroadcastingare deliberately not retried automatically — they wait for a human.
Version 3.0.0 contained two critical issues affecting funds: an unauthenticated SQL injection in the order-creation path, and payouts that were released without waiting for confirmations. Both are fixed in 3.1.0. See SECURITY-FIXES-v3.1.0.md. Anyone running 3.0.0 should upgrade immediately.