API-key routes are served on a plaintext admin-granted listener, so the key crosses in clear #71
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Same class as #69, which closed the dashboard login. Every route behind
auth_middlewareis authenticated by anX-API-Keyheader or a session cookie, and all of them are served on a plaintext listener wherever[[admin.access]]grants one. The redirect does not help: it lives inproxy_handler, the app's fallback, so it never runs for a matched route.So a deployment that grants its admin host a plain binding is accepting its API key in cleartext on
/api/services,/api/l4,/api/status,/api/logsand the rest — including the mutatingPOST/PATCH/DELETEroutes.Not started — this one has a wider blast radius than #69 and needs a decision.
Why it is not just "do what #69 did"
Refusing non-TLS on the
auth_middlewarerouters would break loopback-only automation: a script on the host callinghttp://127.0.0.1/api/serviceswith a key, which is a legitimate pattern and is arguably not an exposure at all, since the traffic never leaves the machine. A blanket refusal kills it; so would moving the redirect app-wide (#70).Options, roughly:
trust_forwarded_formust not be able to launder it.[[admin]]entry, defaulting to refuse.Option 2 is probably right but is the one with a real chance of a subtle hole, which is why this wants its own change rather than riding along with #69.
Related
admin_ip_middlewareentirely, which is a different gap in the same area.access::request_is_httpsalready exists as the single trust-gated TLS test.