security(mesh): resolver probes the unauthenticated PeerInfo.reflexive while verifying+discarding the record's signed endpoints; PunchTo has no record gate #102
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#102
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?
on_rdv verifies
r.node_id == node && verify_record(r)(bin/yipd/src/peer_manager.rs:1022) but then probesPeerInfo.reflexive— the UNSIGNED field — and never uses the record's SIGNEDendpoints. A malicious/compromised rendezvous answers Lookup(Y) with Y's genuine record + any reflexive it likes, steering Y's probes anywhere.PunchTois worse: no record gate at all, and it calls begin_handshake when Idle, with reflexive filled from an unauthenticated Lookup source — a reflection/probe-steering primitive. Bounded by Noise-IK (wrong address just fails to authenticate), so probe-steering/reflection/connection-DoS, not impersonation. Fix: when a verified record is present, restrict/intersect the probe target torecord.endpoints; treat reflexive as an extra candidate only. Sharper cousin of the mesh record-less PeerInfo follow-up noted in #100.See docs/2026-07-25-project-review-and-roadmap.md for the full review synthesis.