Why
forge/config/config.go accepts dangerous combinations. dev_login only checks that http_addr is loopback. Behind a proxy that rewrites Host to 127.0.0.1, isLoopbackRequest can return true for a public request, signing everyone in as the development account.
Scope
- Add
Config.Validate()invoked at startup. - Validate
public_urlas a barehttps://host[:port]with no userinfo/path/query when used for WebAuthn. - Validate
pages_domainas a bare DNS suffix. - Refuse
dev_loginwhenpublic_urlorhttps_addris set; require an explicit dev-only opt-in. - Require HTTPS
public_urlwhenopen_registrationis enabled. - Validate sizes, lease, page settings, ACME directory URL, and
open_registration_role. - Fail startup on unsafe combinations; warnings are not enough.
Acceptance
- A config with
dev_loginplus a public URL or HTTPS listener does not start. - A proxy-style
Host: 127.0.0.1cannot create a dev session.