Files
nuntius/SECURITY.md
petrbalvin 3a38f00dc0
Test / test (push) Successful in 2m1s
Release / gates (push) Successful in 1m57s
Release / build (amd64, freebsd) (push) Successful in 1m26s
Release / build (amd64, linux) (push) Successful in 1m30s
Release / build (arm64, freebsd) (push) Successful in 1m28s
Release / build (arm64, linux) (push) Successful in 1m49s
Release / build (loong64, linux) (push) Successful in 1m30s
Release / build (riscv64, linux) (push) Successful in 1m29s
Release / release (push) Successful in 41s
feat: contact form backend for linux and freebsd servers
Assisted-by: GLM 5.3 Flash
2026-09-29 00:32:56 +02:00

2.4 KiB

Security policy

Supported versions

Security fixes go to the newest release and to the development branch. Older releases do not receive them.

Version Supported
1.0.x yes
older releases no

Reporting a vulnerability

Do not open a public issue for a security problem. A public report tells everyone about the flaw before there is a fix. Report it privately to opensource@petrbalvin.org.

Include:

  • the version or commit you tested, and the platform
  • what the problem is, and what an attacker gains from it
  • the smallest reproducer you have, ideally a test or a single command
  • a suggested fix, if you have one

What to expect

  • A human reads the report, and you get an acknowledgement.
  • You are kept informed while the fix is being made, and told when it ships.
  • The fix is released before the details are published, and the timing is agreed with you.
  • The reporter is credited in the release notes unless they ask to remain anonymous.

Out of scope

  • Findings that require the attacker to already run code as the user, or to have local access.
  • Missing hardening with no demonstrated impact.
  • Flaws in a third-party dependency: report them to that project, and to this one only when this project's use of it makes them reachable.
  • Bypassing the per-IP rate limit from a rotating pool of addresses. nuntius has no CAPTCHA, no proof-of-work and no global rate limit; put a reverse proxy with those capabilities in front of it.
  • Abuse from a compromised frontend that posts valid, allowlisted traffic at the configured rate. The token bucket bounds the volume; nothing else can distinguish it from real users.
  • A compromised server. nuntius reads the SMTP password from the process environment, so anyone with root or ps access can read it from /proc/<pid>/environ.
  • Downgrade of the SMTP transport on a STARTTLS port. Port 587 upgrades opportunistically by design; set smtp.require_tls = true to make the upgrade a hard requirement.
  • Absence of DKIM signing and request signing. Outbound mail is signed by the SMTP provider, and message authenticity rests on the origin allowlist and the honeypot.
  • Content carried by a configured Telegram channel. The submission summary reaches Telegram's servers, exactly as mail reaches the SMTP provider's; forms that must not share content with Telegram simply do not configure the channel.