mirror of
https://github.com/slackhq/nebula.git
synced 2026-11-15 17:56:52 +01:00
Record accepting per-path msg2 resends to replayed msg1s
This commit is contained in:
1 parent
437d47ffc5
commit
b92806d199
1 file changed
+5
@@ -357,6 +357,11 @@ Implemented in `handshake/fragment` (`Sender`, `Assembly`, and the capped `Table
|
||||
a resend costs the initiator K packets on that path and the answer is held to the 3x
|
||||
budget below. That is TFTP's Sorcerer's Apprentice bound, per path rather than per
|
||||
handshake.
|
||||
A path is only an address and port, so a recently answered msg1 replayed from spoofed
|
||||
sources draws one cached msg2 to each, at about 1.2-1.4x the bytes sent and never over 3x,
|
||||
for as long as the answered msg1 is remembered (the handshake timeout). Accepted
|
||||
(2026-10-15): classical IX already resends its stored msg2 to any source that replays msg1,
|
||||
with no clock at all, and a per-handshake clock is what broke a path that only works one way.
|
||||
- Duplicate msg1 detection compares the decoded message to the cached one **before**
|
||||
running Noise or certificate verification.
|
||||
- Before an address is validated, a responder sends at most 3x the bytes it received from
|
||||
|
||||
Reference in new issue
Block a user