Block a user
fix: add CSRF protection to API v1 routes (closes #112)
Add API CSRF protection via X-Requested-With header (closes #112)
Self-Review
Approach: Requires X-Requested-With custom header on non-safe API methods. Browsers cannot send custom headers cross-origin without CORS preflight approval, which prevents…
Add API CSRF protection via X-Requested-With header (closes #112)
fix: disable API v1 write methods (closes #112)
CRITICAL: API exposes webhook secret and SSH private key in app detail response
CRITICAL: API exposes webhook secret and SSH private key in app detail response
Investigated the code. You're right on both counts:
- SSH key: The API only exposes
SSHPublicKey, not the private key. The field inapi.go:24isSSHPublicKey stringand it's populated…
CRITICAL: API exposes webhook secret and SSH private key in app detail response
CRITICAL: Port mappings bind to 0.0.0.0 with no restriction on privileged ports or conflicts
CRITICAL: API v1 routes use cookie auth without CSRF protection — cross-site request forgery
CRITICAL: Volume mounts allow access to any host path (Docker socket, /etc/shadow, etc.)
CRITICAL: Deployed containers have no security constraints (capabilities, seccomp, resource limits)
CRITICAL: Port and TLS checks for apex domains silently do nothing
CRITICAL: TLS expiry warning fires on every check cycle with no deduplication
CRITICAL: Data race in State.Save() — mutates snapshot under RLock