security(rendezvous): registration is replayable after TTL lapse + reg_seq resets on restart — use a wall-clock/TAI64N seq #103

Open
opened 2026-07-25 21:54:00 +00:00 by vxfemboy · 0 comments
vxfemboy commented 2026-07-25 21:54:00 +00:00 (Migrated from github.com)

register_if_fresh (crates/yip-rendezvous/src/server.rs:188) only enforces the counter while the entry is unexpired; once the 60s TTL lapses and sweep drops it, the node is first-seen again and any captured still-signature-valid RegisterSigned re-registers it, with the served reflexive = the replayer's src (re-pin every <60s). And reg_seq is in-memory (peer_manager.rs:512, saturating_add) resetting to 0 on yipd restart, so a restarted victim can't out-counter an attacker who pinned last_counter high. Reachability DoS on the rendezvous path. Fix: make the registration seq a TAI64N/wall-clock-derived monotone value (the same move #34 made for last_accepted_init_ts) — closes both post-expiry replay and the restart reset in one move.

See docs/2026-07-25-project-review-and-roadmap.md for the full review synthesis.

`register_if_fresh` (crates/yip-rendezvous/src/server.rs:188) only enforces the counter while the entry is unexpired; once the 60s TTL lapses and sweep drops it, the node is first-seen again and any captured still-signature-valid `RegisterSigned` re-registers it, with the served reflexive = the replayer's src (re-pin every <60s). And `reg_seq` is in-memory (peer_manager.rs:512, saturating_add) resetting to 0 on yipd restart, so a restarted victim can't out-counter an attacker who pinned last_counter high. Reachability DoS on the rendezvous path. Fix: make the registration seq a TAI64N/wall-clock-derived monotone value (the same move #34 made for last_accepted_init_ts) — closes both post-expiry replay and the restart reset in one move. See docs/2026-07-25-project-review-and-roadmap.md for the full review synthesis.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
femboy/yip#103
No description provided.