wtclientrpc: prevent watchtower connections to local addresses#9230
wtclientrpc: prevent watchtower connections to local addresses#9230anibilthare wants to merge 1 commit into
Conversation
Adds validation to prevent watchtower client connections to local addresses by: - Implementing IsLocalAddress() to detect localhost/local network addresses - Adding check in AddTower RPC to reject local tower connections - Including comprehensive unit tests for address validation This helps prevent security issues from misconfigured watchtower setups that accidentally expose local addresses.
|
Important Review skippedAuto reviews are limited to specific labels. 🏷️ Labels to auto review (1)
Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
|
@ellemouton Please review. |
|
@anibilthare - I think the issue was more about connecting to your own watchtower on the same LND node. ie, connecting the wtclient to the watchtower server on the same LND node |
|
Thanks for the quick response @ellemouton !! I chose to check for all local addresses (rather than just same-node) for these reasons:
Would you prefer we narrow the scope to only prevent same-node connections? I'm open to adjusting the approach if you think the current implementation is too broad. |
|
@ellemouton Any feedback ? |
|
@anibilthare - my concern is that this makes testing hard/impossible. We could just log a warning instead? Your points are all valid but i think the user should have the flexibility to run things how they want to & they themselves should be aware of the risks of certain run configurations imo, the original issue isnt really an issue anyways... maybe others disagree. |
Agreed, a warning log is a good starting point. |
|
What happens if a public IP is configured to point to the same node? The local interface IP will never be the public IP, so I’m not sure this solution would work in that case. If it does, how can we test it? Also, what about onion addresses? |
mapaba79
left a comment
There was a problem hiding this comment.
Hi @anibilthare, thanks for the PR! The implementation is clean and the unit tests are well-structured.
However, I agree with the previous feedback that a hard rejection for all local addresses might be too restrictive, especially for integration testing.
I suggest replacing the connection rejection with a log.Warnf. This informs the user about the redundancy risks without breaking valid local setups or stripping away their flexibility. What do you think?
| err) | ||
| } | ||
|
|
||
| if lncfg.IsLocalAddress(addr) { |
There was a problem hiding this comment.
Consider replacing this hard error with a log.Warnf. This prevents breaking integration tests or specific local setups while still fulfilling the goal of alerting the user about the lack of redundancy.
|
@anibilthare, remember to re-request review from reviewers when ready |
Change Description
Fixes 5522
Adds validation to prevent watchtower client connections to local addresses by:
This helps prevent security issues from misconfigured watchtower setups that accidentally expose local addresses.
Steps to Test
Steps for reviewers to follow to test the change.
