2b: rendezvous server registration is unauthenticated (registration-overwrite DoS) #37
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#37
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?
Context
Whole-branch review of milestone 2b. Availability gap on the internet-exposed
yip-rendezvousserver. No session compromise (Noise + blind relay hold). Inherent to the unauthenticated soft-state design; honest fix is a 2b.1/2c follow-up.Problem
RendezvousServer::handle(crates/yip-rendezvous/src/server.rs,Message::Register) doesregs.insert(node, Reg{ addr: src, .. })unconditionally (capacity permitting). Anode_id = BLAKE2s("yip-rdv-v1"||pubkey)[..16]is derived from a non-secret public key, so anyone who knows a victim's pubkey canRegister{victim_node}from an arbitrary/spoofed source and repoint the victim's entry. ThenLookup{victim}returns the attacker's address andRelaySend{dst=victim}is forwarded to the attacker — the two real peers become unreachable to each other on both discovery and relay. Rate-limiting is keyed onsrc, which src-spoofing sidesteps.The data plane stays secure (attacker can't complete Noise; relay is blind), but the spec's Trust-boundary claim that the server preserves availability is stronger than the mechanism delivers.
Related minor (same root):
Lookupreflection/amplification — one Lookup emits PeerInfo to src + PunchHint to the registered peer (2 packets, 2 dsts); spoofed-src bypasses per-source rate limiting. Low factor (~1–2.7x), inherent to STUN-like rendezvous.Fix direction
Signed / challenge-proven registrations (prove possession of the private key for
node_idbefore accepting/updating a binding), and return-routability for Lookup. Belongs with the control-plane hardening (2b.1) or the discovery milestone (2c).