Skip to content

Security policy

Supported versions

brownout is a library on the v0 release line. Security fixes go into the latest release (currently v0.1.x) and master; upgrade to the newest tag to pick them up. Older v0 releases are not patched.

Reporting a vulnerability

Please don't open a public issue. Report it privately through GitHub's private vulnerability reporting:

https://github.com/rossedman/brownout/security/advisories/new

Include what you found, how to reproduce it (a failing test or a request against one of the examples/ programs is ideal) and the version or commit you tested.

What to expect:

  • an acknowledgement within 3 business days;
  • a fix, or a plan with a timeline, within 30 days;
  • credit in the published advisory, unless you'd rather stay anonymous.

Verifying releases

brownout is installed with go get, which checks every module against the Go checksum database, so most users need nothing more. Each GitHub release from v0.1.4 on also carries a source archive and a checksums.txt signed keylessly with cosign by the release workflow, plus a build provenance attestation. To verify a downloaded archive:

cosign verify-blob checksums.txt \
  --bundle checksums.txt.sigstore.json \
  --certificate-identity-regexp '^https://github.com/rossedman/brownout/.github/workflows/release.yml@refs/tags/v' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com
sha256sum --ignore-missing -c checksums.txt
gh attestation verify brownout_*_source.tar.gz --repo rossedman/brownout

Scope

AdminHandler performs no authentication by design; exposing it without your own auth is a deployment issue, not a vulnerability in brownout (see examples/admin-auth). Bugs that let a request bypass a rule, crash the middleware, or let a rules file or admin request corrupt the active rule set are in scope.