Skip to content

fix(security): stop serving /metrics to the public internet - #109

Merged
deep60 merged 1 commit into
mainfrom
fix/metrics-exposure
Aug 20, 2026
Merged

deep60 merged 1 commit into
mainfrom
fix/metrics-exposure

Conversation

@deep60

@deep60 deep60 commented Aug 20, 2026

Copy link
Copy Markdown
Owner

/metrics was publicly reachable on the live API because the Caddy edge proxied every path to the gateway.

It disclosed build version, process uptime, and request/error counts — no credentials or user data, so low severity, but version disclosure helps an attacker target known CVEs and there's no reason to publish traffic volumes.

Returns 404 rather than 403 so the endpoint's existence isn't confirmed. The monitoring profile scrapes over the internal Docker network and is unaffected.

Found by probing the live deployment after deploy.

The Caddy edge proxied every path to the gateway, including /metrics, so
Prometheus output was reachable at https://<domain>/metrics. It disclosed the
build version, process uptime and request/error counts.

Low severity - no credentials or user data - but version disclosure helps an
attacker target known CVEs, and the endpoint exists for in-network scraping by
the monitoring profile, not for public consumption. Returns 404 rather than 403
so its existence is not confirmed.

Found by probing the live deployment.
@deep60
deep60 merged commit 040071e into main Aug 20, 2026
3 checks passed
@deep60
deep60 deleted the fix/metrics-exposure branch August 20, 2026 11:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant