Anti-abuse: per-guild bridge caps + link-attempt rate limiting for open registration #77
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
dark/nether-voicebridge#77
Loading…
Add table
Add a link
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?
Anti-abuse controls for open registration beyond the current per-owner tenant cap.
Context
Under
open_registration, any Matrix user can DM the bot andlink. Present controls:max_tenants_per_owner(per-MXID), owner/guild/room deny-lists, and a mutate cooldown. Two-sided auth already prevents bridging spaces you don't control — these target the residual vectors.Gap 1 — Sybil resistance (per-guild caps)
max_tenants_per_owneris keyed on the Matrix MXID, but the bridge bot is federation-reachable, so a determined actor can use throwaway accounts on any homeserver to bypass a per-owner cap. nether.im's own registration is invite-code-gated (good Sybil resistance for local users) — but federated owners aren't subject to that. The stronger anchor is the Discord side (Manage Server on a real guild is hard to Sybil at scale). Proposed:Gap 2 — link-attempt rate limiting
Extend the existing mutate cooldown to a per-owner/per-window link-attempt budget so the link/approve flow can't be hammered (pending approvals already count toward the tenant cap; add a velocity limit too).
New knobs under
[limits]. Related: #47, #43.Done.
[limits] max_tenants_per_guild(per-guild anti-Sybil cap) +max_link_attempts(per-owner sliding-window velocity budget, optionallink_attempt_window_secs) shipped, both required-when-open_registration as of the #79 hardening. Merged (master937014b), live-validated (mgmt_self_serve_linkPASS), shipped in v0.3.0-alpha.16, deployed. (Also fixed a pre-existing e2e txn-replay harness bug.)