mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-19 09:40:12 +00:00
Auth.Check resolved client_uuid → server.ID via UUIDToID without checking that the resolved server's UserID matched the user that the secret was bound to. An agent presenting one user's secret could target a different user's server UUID and impersonate it — poisoning monitoring state, triggering alerts, or quietly receiving tasks the real owner expected. Add authorizeAgentForUUID: if the UUID is unknown we still allow new registration bound to the secret owner; if the UUID is known but points to someone else's server we reject. The rejection message "client UUID does not belong to the agent secret owner" also helps operators trace which user's secret has leaked. Note: this changes runtime behaviour after batch-move/server — the new owner must reconfigure agents with their own secret. That is the correct contract; the previous behaviour was a cross-user reporting bug. Co-authored-by: naiba/CloudCode <hi+cloudcode@nai.ba>