SECURITY.md in the repository.
Report a vulnerability
Report a vulnerability privately
Opens GitHub’s private vulnerability reporting for the Lumenstat repository. Only the maintainers see your report.
- What you found.
- How to reproduce it.
- What an attacker could do with it.
What happens next
These are targets, not contractual guarantees.
In scope
- Tenant isolation. One project reading or changing another project’s web or API data, keys or settings. See Tenant isolation.
- The tracker and the collect endpoint. Script injection through the tracker in
packages/tracker, a release whose bytes do not match its published integrity hash, or a way to get fake traffic counted that the quality checks should catch. See Tracker supply chain and Bot and inflation defense. - The OpenTelemetry collector and the writer. Ingest without a valid key, cross-tenant writes, or traces, spans or request bodies being stored.
- The dashboard. Authentication, sign-up, sessions, and operator-only pages and actions.
- Lumenstat’s own code around Umami. The patches in
patches/umami, and the deploy configuration indeploy/andinfra/.
Out of scope
- Volumetric denial of service, and rate limits on public endpoints.
- Social engineering and physical attacks.
- Vulnerabilities in upstream Umami that Lumenstat’s patches do not touch. Report those to Umami. If they affect Lumenstat, report them here too.
- Missing security headers or best practices without a demonstrated impact.
Safe harbor
Lumenstat’s maintainers will not take legal action against research done in good faith that stays within this policy. To stay within it:- Test only against projects you own.
- Do not access or keep other people’s data.
- Do not degrade the service.
- Give the maintainers reasonable time to fix the issue before you disclose it.
Supported versions
Because a released tracker never changes, a fixed version does not reach a site until the project updates the URL and hash in its snippet.
How the service protects data
- Keys. Ingest keys and API read keys are random, shown once, and stored only as SHA-256 hashes. See Tenant isolation.
- Visitor IP addresses are never stored. See the privacy model.
- No published ports. The only way into the server is a Cloudflare Tunnel, which routes only the tracker, the collect endpoint, the OTLP endpoint and the dashboard. Umami’s own admin UI and API are not reachable from the internet.
- Secrets live in an environment file on the server, readable only by its owner, and never in the repository.
- CI pins every third-party action by commit SHA. See Tracker supply chain.