Skip to content

Security: ORDNET/ORDnet-Swap

Security

SECURITY.md

Security Policy

Reporting a vulnerability

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

What to expect

  • 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.

Scope

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

Operator responsibilities

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_KEY and ORDSWAP_ADMIN_KEY must 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_review counter on /admin/stats. Orders in underpaid, payout_failed, processing or broadcasting are deliberately not retried automatically — they wait for a human.

Known history

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.

There aren't any published security advisories