Skip to content

Security: ORDNET/ORDnet-SNS-client

Security

SECURITY.md

Security Policy

Reporting a vulnerability

Please report security issues privately first. Do not open a public issue for anything that could put funds or names at risk.

Preferred channel: GitHub private vulnerability reporting — 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, which file and line, how to reproduce it, and what an attacker gains.

What to expect

  • Acknowledgement: within 3 working days.
  • Assessment: within 10 working days, with a severity.
  • Credit: we will name you in the release notes unless you prefer otherwise.

We do not currently operate a bug bounty.

Threat model

This library decides whether a resolver's answer may be trusted, and callers send money on the strength of that verdict. What matters:

  1. A verdict must be about the question that was asked. A signature covers the answer's own name, so verification that does not compare the answer against the request is not verification at all.
  2. The pinned resolver key is the authority. The answer's own signer field never is.
  3. Nothing may throw on hostile input. A malformed answer is a rejected answer, not a crash in the caller.

Out of scope: the resolver's own correctness (that is what the pinning and the liveness check are for) and key management by the caller.

Known history

Version 1.0.0's verifyAnswer() did not bind the answer to the requested name and did not check the answer's ok field. A correctly signed, unexpired answer for one name therefore verified against a request for another. Fixed in 1.1.0expectName is now required and the function fails closed without it. See SECURITY-FIXES-v1.1.0.md.

There aren't any published security advisories