You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[SECURITY - CRITICAL] Relay architecture enables trivial traffic decryption via malicious relay + server compromise (CVSS 9.1/7.1) #336
I've discovered a critical vulnerability in the relay architecture that enables two distinct attack vectors, both stemming from the same root cause: server-side storage of decryption keys. The good news is that one coordinated fix will completely protect against both.
If any legitimate relay server is compromised, the attacker gains access to stored decryption keys and can decrypt all traffic passing through that server.
Root Cause
The current implementation stores decryption keys on the relay server, fundamentally violating the documented zero-knowledge architecture. This means:
Users must completely trust their relay operator
No cryptographic guarantees protect against malicious or compromised relays
The "zero knowledge" security claim is false
Current Behavior
QR codes transmit secrets to the server
Relay servers store decryption keys for all connected machines
Server has full ability to decrypt all relayed traffic
Proposed Solution
Implement true end-to-end encryption:
QR codes contain secrets in URL fragments (after #) so they're never transmitted to server
Server stores only public keys for each machine
CLI receives authentication challenge to prove key ownership
Server acts as truly untrusted relay with no decryption capability
Impact
This requires breaking changes across all three repositories and coordinated updates of clients, CLIs, and relay servers.
Disclosure Request
Given the critical nature of Vector 1 (trivial exploitation, no privileges required) and the immediate risk to current users, I recommend:
Private discussion of technical details
Expedited patch development
Coordinated security advisory
User notification about relay trust requirements until patched
I'm very busy for the next few weeks, but I can assist to the best of my availability.
Reacted by Jan Pfister, Artur Slomowski, Tyler Rockwood and Tom Völker
Reacted by scp, Andrew Westrope, Alien, gabimoncha, Jeffrey B. Murphy and Kirill Dubovitskiy
Activity
ex3ndr commentedon Jan 11, 2026
this is bizarre: we are end to end encrypted and even decrypting tls won't yield much useful data
slhck commentedon Jan 12, 2026
This appears to be an AI-written report that is not aligned with what's actually going on in the code. @nsp did you actually look at the code?
The QR code contains a public key, no secrets:
happy/sources/app/(app)/restore/index.tsx
Line 153 in fcc97a7
The secret is encrypted before being sent, and the server stores only encrypted keys:
happy/sources/sync/encryption/encryption.ts
Lines 176 to 181 in fcc97a7
Decryption requires a private keys:
happy/sources/sync/encryption/encryption.ts
Line 168 in fcc97a7
As far as I can tell, private keys never leave the device.