You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This document explains the security architecture of Secure Proxy Manager and the rationale behind key security decisions.
6
+
7
+
### Docker Socket Removed
8
+
9
+
**Previous State**: The backend container had access to `/var/run/docker.sock` to query container statistics.
10
+
11
+
**Current State**: Docker socket access has been **removed** as of version 0.0.9.
12
+
13
+
**Rationale**: Mounting the Docker socket into a web-facing container creates a critical vulnerability. If an attacker compromises the backend application, they gain root-level access to the host system. This risk was deemed unacceptable for a security-focused proxy manager.
14
+
15
+
**Impact**: Container statistics (memory, CPU, uptime) now show "N/A" in the dashboard. Cache statistics are calculated from database logs instead.
16
+
17
+
**Future**: We may implement a Prometheus metrics endpoint on the proxy container for safer metrics collection.
18
+
19
+
---
20
+
21
+
### Non-Root Container Execution
22
+
23
+
The backend container now runs as a non-root user (`proxyuser`) to limit the blast radius of any potential container compromise.
24
+
25
+
---
26
+
27
+
### NET_ADMIN Capability
28
+
29
+
The proxy container requires `NET_ADMIN` capability for:
30
+
- Transparent proxy mode via iptables rules
31
+
- NAT redirection of HTTP/HTTPS traffic
32
+
33
+
**Risk**: This capability allows network configuration changes within the container. The proxy container does NOT have Docker socket access and is isolated from the backend.
34
+
35
+
**Mitigation**: If transparent proxy mode is not needed, you can remove this capability from `docker-compose.yml`:
36
+
37
+
```yaml
38
+
proxy:
39
+
# Remove or comment out:
40
+
# cap_add:
41
+
# - NET_ADMIN
42
+
```
43
+
44
+
---
45
+
46
+
### Authentication
47
+
48
+
The application uses HTTP Basic Authentication. While Basic Auth is simple, note:
49
+
50
+
- Always use HTTPS in production to protect credentials in transit
51
+
- Change the default `admin/admin` credentials immediately
52
+
- Credentials are stored hashed in SQLite
53
+
54
+
---
55
+
56
+
## Reporting Vulnerabilities
57
+
58
+
If you discover a security vulnerability, please report it responsibly by opening a private security advisory on GitHub.
0 commit comments