RP-7003
highReverse Proxy Admin/Stats Interface Reachable
Detects a successful request to a reverse proxy or load balancer's own management/status endpoint (nginx stub_status, HAProxy stats page, Envoy admin interface). These expose backend pool membership, connection counts, and sometimes config - reconnaissance value for an attacker, and a sign the interface was left reachable from outside where only internal monitoring should ever reach it.
Detection logic
Fires as soon as one event matches: `uri` contains "/nginx_status" or "/haproxy?stats" or "/envoy/stats" or "/server-status" AND `status` is at least 200 AND `status` is less than 300.
{
"detection_type": "selection",
"selection": {
"uri|contains": [
"/nginx_status",
"/haproxy?stats",
"/envoy/stats",
"/server-status"
],
"status|gte": 200,
"status|lt": 300
}
}Log source: category=reverse_proxy · Event ID(s): rp_access_log
Required log fields
- client_ip
- uri
- status
Enabling this in your environment
Where: Reverse proxy configuration - restrict these endpoints to localhost/an internal monitoring CIDR (allow deny in nginx, or a separate internal-only listener), then log any request that still reaches them
nginx: location /nginx_status { allow 10.0.0.0/8; deny all; } - ensure the deny still gets logged rather than silently dropped.
This is a "should never happen" rule - any hit from outside the monitoring CIDR is itself the finding, not just a precursor to one.
False positives
- Your own monitoring/scraping system (Prometheus node exporter, Datadog agent) polling the stats endpoint on a schedule - allowlist its source IP rather than disabling the rule