SECURITY.md
Rama main · réplica de lectura del repositorio original.
# Security Policy
Numa is a from-scratch DNS resolver: the entire RFC 1035 wire protocol is
hand-rolled, with no DNS library at runtime. That makes the parser and the
resolution path the interesting attack surface, and it's where reports are most
welcome.
## Reporting a vulnerability
Report privately through GitHub's **[Report a vulnerability](https://github.com/razvandimescu/numa/security/advisories/new)**
form (Security → Advisories). It opens a private thread with the maintainer — do
not open a public issue for a suspected vulnerability.
Please include a description, affected version or commit, and the smallest input
or config that reproduces it. A failing fuzz input or a `dig`/`curl` one-liner is
ideal.
Expect an acknowledgement within a few days. Fixes ship on a coordinated
timeline: the advisory (and any CVE) is published once a fixed release is out.
Research done in good faith under this policy is welcome: test against your own
resolver, don't touch other people's, and we won't pursue you for it.
## Scope
In scope — anything that lets a network peer subvert the resolver:
- Wire-format parsing: `packet.rs`, `header.rs`, `question.rs`, `record.rs`,
`svcb.rs`, `wire.rs`, `buffer.rs` (panics, over-reads, infinite loops,
compression-pointer abuse).
- Resolution and validation: cache poisoning, DNSSEC chain-of-trust bypass,
DNS rebinding filter bypass.
- The HTTP control plane and `.numa` proxy: authentication bypass, SSRF,
request smuggling.
- Encrypted transports (DoT/DoH/ODoH) and the ODoH relay.
Out of scope:
- Vulnerabilities in third-party crates — those are tracked by `cargo audit`
(run on every CI build) and Dependabot. Report an unpatched dependency
advisory only if Numa's own use of it is exploitable.
- Deployment misconfiguration in a config *you* wrote — e.g. terminating TLS in
front of the control plane incorrectly, or publishing it to the internet on
purpose (see `recipes/dnsdist-front.md`). A default or shipped config that
leaves the control plane reachable without a credential is **in scope**, not
misconfiguration.
- Denial of service that requires privileged local access.
## What we run
Defense in depth is automated, not a substitute for review:
- `cargo audit` gates every build; Dependabot proposes dependency bumps monthly.
- `cargo fuzz` over the wire parser (`fuzz/`): a smoke run on every PR that
touches it, a deeper weekly pass, seeded from a committed corpus. It has
already caught real parser bugs.
- `clippy -D warnings` is a hard gate.
## Supported versions
Fixes land on `main` and in the next release. Only the latest release is
supported; please reproduce against `main` or the most recent tag before
reporting.