3c.3 relay: idle-connection timing side-channel (classification timeout delays decoy connect) #63
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#63
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 Trojan front (
bin/yip-rendezvous/src/conn.rs) has a narrow but real timing side-channel on fully-silent connections that an active prober could use to distinguish the relay from a bare web server.Mechanism
handle_connectiontrial-reads the first frame underCLASSIFY_TIMEOUT(~3s) to decide tunnel-vs-decoy. On a connection that sends nothing, that timeout fires, and only then doesinto_decoyopen the TCP connection to the decoy backend and startcopy_bidirectional. So the decoy's own idle-close clock starts ~3s late: the relay's observable time-to-close for a silent client isCLASSIFY_TIMEOUT + decoy_native_timeout(~63s) versus a bare server's native timeout (~60s).An adversary who baselines "connect, stay silent, measure time-to-close" against the real decoy directly vs. through the relay can observe the ~3s differential — the class of behavioral fingerprint 3c.3 exists to eliminate.
Scope / severity
GETprefix exceedsMAX_FIRST_FRAME), so an ordinary probe sees no differential.Fix directions
CLASSIFY_TIMEOUTso the offset falls within normal server jitter.Surfaced by the Task 6 whole-branch-style review during 3c.3 subagent-driven execution.