3c.3 relay: TLS-front path has no rate limiting (per-connection RelaySend cap) #65
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
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
femboy/yip#65
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?
Summary
The 3c.3 relay's TLS-front path has no rate limiting. The UDP path's
RendezvousServer::rate_ok(per-source token bucket) is only invoked fromhandle(UDP). The TLS discriminator callsregister_if_fresh_tlsdirectly andconn_tunnel::routeforwardsRelaySendwith no per-connection or per-source cap. A single upgraded TLS peer can pump unlimitedRelaySendframes through the blind relay.This compounds the (now-fixed) per-pair backpressure: deliveries are best-effort
try_send(drop-on-full), so an abuser can't wedge the relay, but can still consume CPU/bandwidth forwarding.Severity
Minor for a blind best-effort relay, but worth an explicit per-connection
RelaySendbudget given the active-adversary threat model this milestone targets. The fixed syntheticsrc = 0.0.0.0:0on the TLS path also makes per-source limiting meaningless there, so a per-connection (per-task) counter is the right granularity.Fix directions
run_tunnel(frames/sec), dropping or tearing down on sustained abuse.Surfaced by the 3c.3 final whole-branch review.