AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Low 25 Bitcoin

onion_message: use trampoline nodes for onion messages

Public commit record

What the developer wrote

Authored by f321x

50/100 · Thin
onion_message: use trampoline nodes for onion messages
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
The short version

What changed, and why it matters

This commit changes how Electrum routes private 'onion messages' through the Lightning Network. For users on 'trampoline' payment setups, it now sends messages via a randomly chosen trampoline peer and trusts that peer to forward the message to the final recipient. The change removes some safety checks that previously required an active channel or a known network path, and it uses Python's standard random module to pick the trampoline peer. This could make message delivery less reliable or more predictable, and it shifts trust onto trampoline nodes, but it does not appear to be a direct theft or remote-code-execution vulnerability.

Recommended action

Review whether random.choice is acceptable here or whether secrets.choice should be used for peer selection. Confirm that trampoline peers are expected to relay arbitrary onion messages (Eclair's relay-all policy is noted in a comment). Consider adding a fallback or retry mechanism when the chosen trampoline cannot reach the destination, and re-evaluate removing the is_frozen_for_sending() filter. Treat this as a routine protocol/logic change rather than an urgent security patch unless further review shows exploitable message interception or deanonymization.

Security signals we found

01

Routing logic now trusts trampoline peers to open direct connections and forward onion messages (relayed trust assumption)

02

Random trampoline peer selection uses Python's standard random module, which is not cryptographically secure and could be predictable if an attacker can influence process state

03

Removed the is_frozen_for_sending() filter when building my_sending_channels in non-trampoline path

04

NoRouteFound now only carries peer_addr in the non-trampoline branch, removing a potential direct-connection fallback for trampoline users

05

No explicit validation that the chosen trampoline peer is online, connected, or willing to relay onion messages

Risk score

Why this scored 25/100

Our methodology →
Potential impact 3/30
Exploitability 4/25
Stealth signal 5/15
Affected reach 6/15
Confidence 4/10
Evidence quality 3/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.